显示八进制值作为其字符串表示形式

时间:2015-05-11 05:34:15

标签: python format octal

将八进制数转换为字符串时出现问题。

p = 01212
k = str(p)
print k

结果是650,但我需要01212。我怎样才能做到这一点?提前谢谢。

2 个答案:

答案 0 :(得分:17)

您的号码p是实际的,而不是该值的表示。实际上它实际上是650101212828a16同时。

如果您想将其视为八进制,请使用:

print oct(p)

根据以下成绩单:

>>> p = 01212
>>> print p
650
>>> print oct(p)
01212

这适用于Python 2(由于您使用八进制文字的0NNN变体而不是0oNNN),因此您似乎正在使用它。

Python 3的表示略有不同:

>>> p = 0o1212
>>> print (p)
650
>>> print (oct(p))
0o1212

答案 1 :(得分:9)

一种方法是使用Format Mini Specification Language中的o格式字符:

示例:

>>> x = 01212
>>> print "0{0:o}".format(x)
01212
  

'o'八进制格式。输出基数为8的数字。

NB:您仍需要添加0除非您使用内置函数oct() )。

更新:如果您使用的是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