繁体   English   中英

如何在 Python 中创建位数组?

[英]How to create an array of bits in Python?

如何声明一个非常大的位数组,比如 600 万位?

from bitarray import bitarray

a = bitarray(2**20)

您可以在http://pypi.python.org/pypi/bitarray/查看有关此模块的更多信息

模块可能有帮助:

from bitstring import BitArray
a = BitArray(6000000)

这将占用不到 1 兆字节的内存,并且很容易设置、读取、切片和解释位。 与 bitarray 模块不同,它是纯 Python 的,而且它适用于 Python 3。

有关更多详细信息,请参阅文档

这种单行将字节转换为真/假位值列表。 对于 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]

使用获取位数组模块

pip install bitarray

然后,这段代码将创建一个大小为 600 万的位数组,

from bitarray import bitarray
bit_array = bitarray(6000000)

您可以使用

bit_array.setall(0)

要将特定位(例如位号 25)设置为 1,请执行以下操作:

bit_array[25]=1   

很容易

bitarray60000 = 1<<60000

有了这个,您可以使用 bitshift 运算符来满足您的需求。 例如,位置 2 设置为 True 将是:

bitarray60000 | 1<<2

从位置 2 获取位

bitarray60000 & 1<<2

我想这个想法很简单。 虽然有些操作可能很棘手。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM