我刚开始在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')
答案 0 :(得分:3)
bitarray.bitarray(n)
创建一个长度为n
的未初始化的数组。
就从整数创建而言,bitarray
似乎并不特别适合于此,因此您必须使用pack/unpack
或循环使用各个位来设置它们。
答案 1 :(得分:0)
>>> from bitarray.util import int2ba
>>> int2ba(5)
bitarray('101')
来自“bitarray.util 模块中定义的函数:”下的 project page。