Как преобразовать bitarray в целое число в python
предположим, я определил некоторые типа bitarray в Python, используя следующий код:
from bitarray import bitarray
d=bitarray('0'*30)
d[5]=1
Как преобразовать d в его целочисленное представление?
Кроме того, как я могу выполнять такие манипуляции, как d&(d+1)
С bitarrays?
3 ответов
преобразование 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))
Code wise это может быть не так эффективно, так как он преобразует битовый массив в строку, а затем обратно в int, но он гораздо более лаконичен для чтения, поэтому, вероятно, лучше в более коротких сценариях.