从整数创建Python bitarray - 结果奇怪!

5 投票
2 回答
7657 浏览
提问于 2025-04-16 19:58

我刚开始使用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')

有没有人知道为什么会这样吗??

还有:有没有更好的方法来从一个整数生成bitarray?虽然这个方法可以用,但把整数转成字符串感觉有点奇怪……

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

编辑:我最后换用了bitstring,这个库确实有一个简单的方法可以从整数得到bitstring:

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

2 个回答

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

来自这个项目页面,在“bitarray.util模块中定义的函数”部分。

3

bitarray.bitarray(n) 这个命令会创建一个长度为 n未初始化 数组。

如果你想从一个整数来创建这个数组,bitarray 似乎并不是特别方便,所以你要么得用 pack/unpack 方法,要么就得一个一个地循环处理每个比特位来设置它们。

撰写回答