从整数做一个python bitarray - 奇怪的结果!

时间:2011-06-21 07:50:03

标签: python bit-fields bitarray

我刚开始在python中使用bitarray包,并试图从整数中进行一个bitarray给我带来了令人困惑的结果:

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

有谁知道为什么会发生这种情况?

另外:什么是从int制作bitarray的更好方法?这有效,但字符串转换似乎是一种奇怪的方式...

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

编辑:我最终切换到bitstring,这有一种从ints获取位串的简单方法:

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

2 个答案:

答案 0 :(得分:3)

bitarray.bitarray(n)创建一个长度为n未初始化的数组。

就从整数创建而言,bitarray似乎并不特别适合于此,因此您必须使用pack/unpack或循环使用各个位来设置它们。

答案 1 :(得分:0)

>>> from bitarray.util import int2ba
>>> int2ba(5)
bitarray('101')

来自“bitarray.util 模块中定义的函数:”下的 project page