我如何声明一个非常大的位数组,比如600万个位?
from bitarray import bitarray
a = bitarray(2**20)
你可以查看更多关于这个模块的信息,访问http://pypi.python.org/pypi/bitarray/
bitarray
不似乎属于标准 Python,而是由 PyPy 提供的一个功能。 - zvezda这个一行代码将字节转换为True/False位值的列表。 对于6M位来说可能不够高效,但对于小标志来说应该很好,并且不需要额外的依赖。
>>> flags = bytes.fromhex(b"beef")
>>> bits = [flags[i//8] & 1 << i%8 != 0 for i in range(len(flags) * 8)]
>>> print(bits)
[False, True, True, True, True, True, False, True, True, True, True, True, False, True, True, True]
非常容易
bitarray60000 = 1<<60000
你可以使用位移运算符,根据你的需求进行操作。例如,将第二位设为 True 的操作如下:
bitarray60000 | 1<<2
获取第2位的比特
bitarray60000 & 1<<2
我想这个想法相当简单,尽管有些操作可能会棘手。使用以下命令获取bitarray模块
pip install bitarray
from bitarray import bitarray
bit_array = bitarray(6000000)
bit_array.setall(0)
bit_array[25]=1