2010-03-12 32 views
3

整数转换到 '二进制' 在Ruby我这样做我怎么能在Python

asd = 123 
asd = '%b' % asd # => "1111011" 
+0

重复:http://stackoverflow.com/questions/1993834/how-change-int-to-binary-on-python-2-5 – 2010-03-12 18:41:32

+0

“复制” 就是Python 2.5。语言不断发展,不要急于发布“重复”问题链接。 – 2010-03-12 21:33:16

回答

7

你也可以做字符串格式化,其中不包含'0b'

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

链接:http://docs.python.org/library/string.html#format-specification-mini-language – 2010-03-12 18:18:44

+0

很酷!但它应该是''{0:b}'。format(123)',它仅适用于python版本≥2.6。 – 2010-03-12 18:22:31

+0

太棒了,这是我发现的。 – edtsech 2010-03-12 18:22:48

7
在Python

> = 2.6 bin()

asd = bin(123) # => '0b1111011' 

删除前导0b你可以采取子字符bin(123)[2:]

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

版本2.6中的新功能。

+0

您也可以通过执行bin(123).strip('0b')来删除前导'0b'。 – 2010-03-12 18:40:32

+1

@Justin,你应该使用'lstrip'而不是'strip',因为后者会从字符串的末尾和前面去掉任何'0'(从而改变值)。切片可能是更好的方法,因为它只会从字符串中删除这两个字符。 – tgray 2010-03-12 20:11:41

+0

@tgray是的,我现在同意我已经多想了一会儿。 – 2010-03-12 20:55:45

0

滨()的作品,如菲利克斯提及。为了保持完整性,您可以使用 。

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