28

可能重复:
在不使用内置 bin 函数的情况下将整数转换为二进制

如何将十进制数转换为二进制列表。

例如,如何将 8 更改为 [1,0,0,0]

4

3 回答 3

31

您可能可以使用内置bin函数:

bin(8) #'0b1000'

获取列表:

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

虽然看起来可能有更好的方法......

于 2012-11-26T02:39:32.243 回答
21

尝试这个:

>>> 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
于 2012-11-26T02:46:39.987 回答
6

本着您最初尝试的精神:

binary = []
while num != 0:
    bit = num % 2
    binary.insert(0, bit)
    num = num / 2
于 2012-11-26T02:46:07.760 回答