二进制数?

lqd*_*qdc 3 python binary

我正在使用python shell来弄清楚print命令在python中是如何工作的.
当我输入

打印01
1
打印010
8
打印0100
64
打印030
24

这里发生了什么?它只是基数2吗?为什么第二个位置的"一个"打印为8?如果它是二进制的,它不应该是2吗?

Len*_*bro 12

启动一个带零的数字在Python 2中将其标记为八进制.这被认为是令人困惑,令人惊讶且不一致,因为从0x开始将其标记为十六进制.因此,在Python 3中,从0开始是无效的,并且从0开始获得八进制.您也可以从0b开始将其标记为二进制.

>>> 10
10
>>> 0x10
16
>>> 0o10
8
>>> 0b10
2
>>> 010
  File "<stdin>", line 1
    010
      ^
SyntaxError: invalid token
Run Code Online (Sandbox Code Playgroud)

0x,0o和0b也适用于Python 2.6和Python 2.7.


Mar*_*ers 5

这是Python中八进制数字的旧符号.

在Python 2.6及更高版本中,您应该使用0o10八进制和0b10010二进制数的语法.

在旧版本的Python中,您输入二进制数字作为字符串并将它们解析为整数:

>>> x = int("10010", 2)
>>> print x
18
Run Code Online (Sandbox Code Playgroud)