2

可能重复:
如何在 Python 中表达二进制文字?

使用交互式 shell 时:

print 010

我回来了一个8。

我开始使用其他零之前的数字(0110 = 72, 013 = 11),但我无法弄清楚......

这里发生了什么?

4

3 回答 3

13

以前导零输入的数字被解释为八进制(以 8 为基数)。

007 == 7
010 == 8
011 == 9
于 2010-08-08T05:10:52.530 回答
3

像许多语言一样,带有前导零的整数被解释为八进制。这意味着它是以八为底的。例如,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))
于 2010-08-08T05:10:37.923 回答
3

Python 对八进制和十六进制文字采用了 C 的表示法:以八进制开头的整数文字,以十六进制开头的整数0文字0x

0前缀被认为容易出错,因此 Python 3.0 将八进制前缀更改为0o.

于 2010-08-08T05:21:26.417 回答