4

我刚刚开始在 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(bin(5)[2:])
bitarray('101')

编辑:我最终切换到bitstring,它确实有一种从整数获取位串的简单方法:

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

2 回答 2

3

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

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

于 2011-06-21T07:55:24.153 回答
1
>>> from bitarray.util import int2ba
>>> int2ba(5)
bitarray('101')

从“bitarray.util 模块中定义的功能:”下的项目页面。

于 2021-03-19T17:16:39.133 回答