2012-11-26 29 views
11

可能重复:
Convert an integer to binary without using the built-in bin function如何十进制转换为二进制名单蟒蛇

我怎么转换成十进制数转换成二进制列表。

例如,我怎么改8成[1,0,0,0]

+1

我尝试这样做: 二进制= 0 而NUM = 0: 位= NUM​​%2 二进制=位+(10 *二进制) NUM = NUM​​/2 二进制= [二进制] 返回二进制 但它不给我逗号之间的数字,它并不总是添加零。 – booboboobobob

+0

你有什么尝试?你可能想看看Python函数'bin'。 – Yuushi

+0

我想做没有这个功能,如果我可以 – booboboobobob

回答

16

你也许可以使用内置bin功能:

bin(8) #'0b1000' 

以获取列表:

[int(x) for x in bin(8)[2:]] 

虽然看起来好像还有更好的办法......

+1

依赖于字符串表示细节,并从一个整数到一个字符串,然后到一个列表似乎....次优。 – slacy

2

在你的精神里R论着尝试:

binary = [] 
while num != 0: 
    bit = num % 2 
    binary.insert(0, bit) 
    num = num/2 
+2

对于'.append()'位,然后'.reverse()'列表最后会更好,而不是在列表的开头插入''。 – Tim

7

试试这个:

>>> list('{0:0b}'.format(8)) 
['1', '0', '0', '0'] 

编辑 - 哎呀,你想要的整数:

>>> [int(x) for x in list('{0:0b}'.format(8))] 
[1, 0, 0, 0] 

另一个编辑 -

mgilson的版本是一个小位更快:

$ python -m timeit "[int(x) for x in list('{0:0b}'.format(8))]" 
100000 loops, best of 3: 5.37 usec per loop 
$ python -m timeit "[int(x) for x in bin(8)[2:]]" 
100000 loops, best of 3: 4.26 usec per loop