web-dev-qa-db-ja.com

ビット配列を整数に変換する方法python

次のコードを使用して、python)でビット配列を定義するとします。

_from bitarray import bitarray
d=bitarray('0'*30)
d[5]=1
_

Dを整数表現に変換するにはどうすればよいですか?さらに、ビット配列を使用してd&(d+1)などの操作を実行するにはどうすればよいですか?

10
Miriam Farber

bitarrayを整数形式に変換するには、structモジュールを使用できます。

コード:

from bitarray import bitarray
import struct

d = bitarray('0' * 30, endian='little')

d[5] = 1
print(struct.unpack("<L", d)[0])

d[6] = 1
print(struct.unpack("<L", d)[0])

出力:

32
96
7
Stephen Rauch
from bitarray import bitarray
d=bitarray('0'*30)
d[5]=1

i = 0
for bit in d:
    i = (i << 1) | bit

print i

出力:16777216。

4
Serenity

私が一般的に使用するより簡単なアプローチは

d=bitarray('0'*30)
d[5]=1
print(int(d.to01(),2))

コード的には、ビット配列を文字列に変換してからintに戻すため、これはそれほど効率的ではない可能性がありますが、読む方がはるかに簡潔なので、短いスクリプトの方がおそらく良いでしょう。

4
falcoso