如何在python中将十进制转换为二进制列表

boo*_*bob 22 python binary list

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

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

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

mgi*_*son 26

您可以使用内置bin函数:

bin(8) #'0b1000'
Run Code Online (Sandbox Code Playgroud)

获取列表:

[int(x) for x in bin(8)[2:]]
Run Code Online (Sandbox Code Playgroud)

虽然看起来似乎有更好的方法......

  • 依赖字符串表示细节并从整数到字符串然后到列表似乎....次优. (3认同)

Sea*_*ond 17

试试这个:

>>> list('{0:0b}'.format(8))
['1', '0', '0', '0']
Run Code Online (Sandbox Code Playgroud)

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

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

另一个编辑 -

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
Run Code Online (Sandbox Code Playgroud)


Ale*_*ler 6

本着您最初尝试的精神:

binary = []
while num != 0:
    bit = num % 2
    binary.insert(0, bit)
    num = num / 2
Run Code Online (Sandbox Code Playgroud)

  • 最好是`.append()` 位然后`.reverse()` 在列表的末尾而不是在列表的开头`insert`。 (3认同)