I meet a problem about converting number to string.
I want to get a string \"0100\" from str(0100), but what I got is \"64\". Does any way I can do to get a string \"010
You could just concatenate both strings so if you want 0100
res = str(0) + str(100)
that way res = '0100'
The integer should be written as 100, not 0100.
You can format the string with leading zeros like this:
>>> "%04d" % 100 '0100'
Your first issue is that the literal "0100", because it begins with a digit 0, is interpreted in octal instead of decimal. By contrast, str(100)
returns "100"
as expected.
Secondly, it sounds like you want to zero-fill your numbers to a fixed width, which you can do with the zfill
method on strings. For example, str(100).zfill(4)
returns "0100"
.
In Python2, a leading 0
on a numeric literal signifies that it is an octal number. This is why 0100 == 64
. This also means that 0800
and 0900
are syntax errors
It's a funny thing that's caught out many people at one time or another.
In Python3, 0100 is a syntax error, you must use the 0o
prefix if you need to write a octal literal. eg. 0o100 == 64
Not sure if I understood the question... maybe you're looking for this:
'%04o' % 0100 # 0100