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

11

在将八进制数字转换为字符串时,我遇到了一个问题。

p = 01212
k = str(p)
print k

结果是650,但我需要01212。我该怎么做?谢谢。
2个回答

23

你的数字p 是实际值而不是该值的表示。所以它实际上是 650101212828a16同时存在。

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

print oct(p)

根据以下记录:

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

那是针对Python 2的(因为您使用八进制字面值的0NNN变体,而不是0oNNN,看起来您正在使用Python 2)。

Python 3的表示略有不同:

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

在Python3中有轻微的修改。 - Ajay
@Ajay,我添加了Py3的内容,尽管我认为OP仍在使用Py2。但是了解这些内容还是很好的。 - paxdiablo

14

一种方法是使用格式规范迷你语言中的o格式字符:

示例:

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

'o' 八进制格式。以八进制输出数字。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接