web-dev-qa-db-ja.com

pythonで10進数を2進数リストに変換する方法

可能性のある複製:
組み込みのbin関数を使用せずに整数をバイナリに変換する

10進数を2進数リストに変換するにはどうすればよいですか。

たとえば、8を[1,0,0,0]に変更するにはどうすればよいですか

20
booboboobobob

おそらく組み込みのbin関数を使用できます:

bin(8) #'0b1000'

リストを取得するには:

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

おそらくもっと良い方法があるようですが...

25
mgilson

これを試して:

>>> 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
16
Sean Redmond

最初の試みの精神で:

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