如何在Python中将整数转换为二进制

3
在 Ruby 中,我这样做
asd = 123
asd = '%b' % asd # => "1111011"

重复:http://stackoverflow.com/questions/1993834/how-change-int-to-binary-on-python-2-5 - S.Lott
“duplicate” 是针对 Python 2.5 的。编程语言不断发展,请不要急于发布“重复”问题链接。 - Humphrey Bogart
3个回答

7

你也可以进行字符串格式化,它不包含 '0b'

>>> '{:b}'.format(123)            #{0:b} in python 2.6
'1111011'

链接:http://docs.python.org/library/string.html#format-specification-mini-language - Felix Kling
很酷啊!但应该是'{0:b}'.format(123),并且只适用于Python版本≥2.6。 - Olivier Verdier
太好了,我找到了。 - edtsech
@Oliver:注释已经说明了。'{:b}'是Python 2.7和3.1版本的代码。 - SilentGhost

7
在 Python >= 2.6 中使用 bin()
asd = bin(123) # => '0b1111011'

要去掉前导的0b,只需取子字符串bin(123)[2:]

bin(x)
将整数转换为二进制字符串。结果是一个有效的Python表达式。如果x不是Python int对象,则必须定义一个返回整数的__index__()方法。

在2.6版本中新增。


你也可以通过执行bin(123).strip('0b')来删除前导的“0b”。 - Justin Peel
1
@Justin,你应该使用lstrip而不是strip,因为后者会将字符串末尾和开头的所有0都去掉(从而改变值)。切片可能是更好的选择,因为它只会从字符串中删除这两个字符。 - tgray
@tgray 是的,我现在同意了,因为我思考了一下。 - Justin Peel

0

如Felix所提到的,bin()函数可以正常工作。为了完整起见,您也可以反过来使用。

>>> int('01101100',2)
108
>>> bin(108)
'0b1101100'
>>> bin(108)[2:]
'1101100'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接