次のコードを使用して、python)でビット配列を定義するとします。
_from bitarray import bitarray
d=bitarray('0'*30)
d[5]=1
_
Dを整数表現に変換するにはどうすればよいですか?さらに、ビット配列を使用してd&(d+1)
などの操作を実行するにはどうすればよいですか?
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
from bitarray import bitarray
d=bitarray('0'*30)
d[5]=1
i = 0
for bit in d:
i = (i << 1) | bit
print i
出力:16777216。
私が一般的に使用するより簡単なアプローチは
d=bitarray('0'*30)
d[5]=1
print(int(d.to01(),2))
コード的には、ビット配列を文字列に変換してからintに戻すため、これはそれほど効率的ではない可能性がありますが、読む方がはるかに簡潔なので、短いスクリプトの方がおそらく良いでしょう。