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

问题描述 投票:0回答:3

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

p = 01212
k = str(p)
print k

结果是

650
,但我需要
01212
。我怎样才能做到这一点?预先感谢。

python format octal
3个回答
23
投票

您的数字

p
是实际的,而不是该值的表示。所以实际上是
65010
12128
28a16
同时存在。

如果你想将其视为八进制,只需使用:

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

14
投票

一种方法是使用

格式迷你规范语言
中的o格式字符:

示例:

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

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

注意: 您仍然需要在前面添加

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

0
投票

除了前面的答案之外,如果您使用 f 字符串:

>>> p = 0o1212
>>> print(f"{p:o}")
1212
>>> print(f"{p:#o}")
0o1212

请注意,第二种表示法也可用于

format
:

>>> print("{:#o}".format(p))
0o1212

但是有了可用的 f 字符串,就很少需要这样做了。

© www.soinside.com 2019 - 2024. All rights reserved.