如何用Python文字将整数表示为二进制数?

我很容易就找到了hex的答案:

>>> 0x12AF
4783
>>> 0x100
256

和八进制:

>>> 01267
695
>>> 0100
64

在Python中如何使用文字来表示二进制?


回答摘要

Python 2.5及更早版本:可以使用int('01010101111',2)表示二进制,但不能使用字面量。 Python 2.5及更早版本:无法表示二进制字面值。 Python 2.6 beta:你可以这样做:0b1100111或0b1100111。 Python 2.6 beta:也将允许0o27或0o27(第二个字符是字母O)表示八进制。 Python 3.0 beta版:与2.6版相同,但不再允许八进制使用旧的027语法。


当前回答

这里开始的0指定底数是8(不是10),这很容易看出:

>>> int('010101', 0)
4161

如果你不以0开头,那么python会假设这个数字以10为底。

>>> int('10101', 0)
10101

其他回答

据我所知,Python在2.5之前只支持十六进制和八进制文字量。我确实发现了一些关于在未来版本中添加二进制的讨论,但没有明确的内容。

我很确定这是Python 3.0中bin()与hex()和oct()一起改变的事情之一。

编辑: Lbrandy的答案在所有情况下都是正确的。

另一个从二进制中获得整数表示的好方法是使用eval()

像这样:

def getInt(binNum = 0):
    return eval(eval('0b' + str(n)))

我想这也是一种方法。 我希望这是一个令人满意的答案:D

这里开始的0指定底数是8(不是10),这很容易看出:

>>> int('010101', 0)
4161

如果你不以0开头,那么python会假设这个数字以10为底。

>>> int('10101', 0)
10101

我在Python 3.6.9中尝试过

将二进制转换为十进制

>>> 0b101111
47

>>> int('101111',2)
47

将十进制转换为二进制

>>> bin(47)
'0b101111'

将0作为第二个参数,python假定它是小数。

>>> int('101111',0)
101111