可能重复:
如何在 Python 中表达二进制文字?
使用交互式 shell 时:
print 010
我回来了一个8。
我开始使用其他零之前的数字(0110 = 72, 013 = 11),但我无法弄清楚......
这里发生了什么?
可能重复:
如何在 Python 中表达二进制文字?
使用交互式 shell 时:
print 010
我回来了一个8。
我开始使用其他零之前的数字(0110 = 72, 013 = 11),但我无法弄清楚......
这里发生了什么?
以前导零输入的数字被解释为八进制(以 8 为基数)。
007 == 7
010 == 8
011 == 9
像许多语言一样,带有前导零的整数被解释为八进制。这意味着它是以八为底的。例如,020 的十进制值为 16,030 的十进制值为 24。为了完整起见,这就是它的工作原理。value
接受一个字符串并返回该字符串的十进制值,解释为八进制。它不进行任何错误检查,因此您必须确保每个数字都在 0 和 8 之间。不需要前导 0。
def value(s):
digits = [int(c) for c in s]
digits.reverse()
return sum(d * 8**k for k, d in enumerate(digits))
Python 对八进制和十六进制文字采用了 C 的表示法:以八进制开头的整数文字,以十六进制开头的整数0
文字0x
。
该0
前缀被认为容易出错,因此 Python 3.0 将八进制前缀更改为0o
.