Python 2.7 str(055)返回“45”而不是055

时间:2014-01-28 23:38:26

标签: python string python-2.7

为什么我在python 2.7中得到以下结果,而不是'055'?

>>> str(055)
'45'

1 个答案:

答案 0 :(得分:11)

055是一个八进制数,其十进制等值为45,使用oct来获得正确的输出。

>>> oct(055)
'055'
Python 2.X中的

Syntax for octal numbers

octinteger     ::=  "0" ("o" | "O") octdigit+ | "0" octdigit+

但这只是出于表示目的,最终它们总是转换为整数以进行存储或计算:

>>> x = 055
>>> x
45
>>> x = 0xff   # HexaDecimal
>>> x
255
>>> x = 0b111  # Binary
>>> x
7
>>> 0xff * 055
11475

注意在Python 3.x中,八进制数现在由0o表示。因此,使用055会引发SyntaxError