问题
I've got a problem when converting an octal number to a string.
p = 01212
k = str(p)
print k
The result is 650
but I need 01212
. How can I do this? Thanks in advance.
回答1:
Your number p
is the actual value rather than the representation of that value. So it's actually 65010
, 12128
and 28a16
, all at the same time.
If you want to see it as octal, just use:
print oct(p)
as per the following transcript:
>>> p = 01212
>>> print p
650
>>> print oct(p)
01212
That's for Python 2 (which you appear to be using since you use the 0NNN
variant of the octal literal rather than 0oNNN
).
Python 3 has a slightly different representation:
>>> p = 0o1212
>>> print (p)
650
>>> print (oct(p))
0o1212
回答2:
One way is to usse the o
format character from the Format Mini Specification Language:
Example:
>>> x = 01212
>>> print "0{0:o}".format(x)
01212
'o' Octal format. Outputs the number in base 8.
NB: You still have to prepend the 0
(Unless you use the builtin function oct()
).
Update: In case you're using Python 3+:
$ python3.4
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 01212
File "<stdin>", line 1
x = 01212
^
SyntaxError: invalid token
>>> x = 0o1212
>>> print(oct(x))
0o1212
>>> print("0o{0:o}".format(x))
0o1212
来源:https://stackoverflow.com/questions/30160270/display-an-octal-value-as-its-string-representation