сделать Python Bitarray из целого числа - странные результаты! - PullRequest
3 голосов
/ 21 июня 2011

Я только начинаю использовать пакет bitarray в python, и попытка сделать bitarray из целого числа дает мне действительно запутанные результаты:

>>> import bitarray
>>> bitarray.bitarray(5)
bitarray('01000')
>>> bitarray.bitarray(5)
bitarray('00010')
>>> bitarray.bitarray(5)
bitarray('00100')
>>> bitarray.bitarray(5)
bitarray('00110')

Кто-нибудь знает, почему это происходит ??

Кроме того: что было бы лучшим способом сделать bitarray из int? Это работает, но преобразование строк кажется странным способом сделать это ...

>>> bitarray.bitarray(bin(5)[2:])
bitarray('101')

Редактировать: Я закончил тем, что переключился на цепочку битов , которая имеет простой способ получения цепочек битов из целых:

>>> bitstring.BitArray(uint=5,length=6)
BitArray('0b000101')

1 Ответ

3 голосов
/ 21 июня 2011

bitarray.bitarray(n) создает неинициализированный массив длины n.

Что касается создания из целого числа, bitarray, похоже, не особенно ориентировано на это, поэтому вам придется либо использовать pack/unpack, либо перебирать отдельные биты для их установки.

...