SJP*_*SJP 34
from bitarray import bitarray
a = bitarray(2**20)
Run Code Online (Sandbox Code Playgroud)
您可以在http://pypi.python.org/pypi/bitarray/上查看有关此模块的更多信息.
Sco*_*ths 24
该位串模块可以帮助:
from bitstring import BitArray
a = BitArray(6000000)
Run Code Online (Sandbox Code Playgroud)
这将占用不到一兆字节的内存,并且可以轻松设置,读取,切片和解释位.与bitarray模块不同,它是纯Python,而且适用于Python 3.
有关详细信息,请参阅文档.
Pav*_*ari 11
很容易
bitarray60000 = 1<<60000
Run Code Online (Sandbox Code Playgroud)
这样,您就可以使用位移运算符来满足您的需求了。例如,位置 2 设置为 True 将是:
bitarray60000 | 1<<2
Run Code Online (Sandbox Code Playgroud)
从位置 2 获取位
bitarray60000 & 1<<2
Run Code Online (Sandbox Code Playgroud)
我想这个想法很简单。尽管有些操作可能很棘手。
小智 8
这个单行将字节转换为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]
Run Code Online (Sandbox Code Playgroud)
使用bitarray模块
pip install bitarray
Run Code Online (Sandbox Code Playgroud)
然后,这段代码将创建一个大小为600万的位数组,
from bitarray import bitarray
bit_array = bitarray(6000000)
Run Code Online (Sandbox Code Playgroud)
您可以使用将所有位初始化为零
bit_array.setall(0)
Run Code Online (Sandbox Code Playgroud)
要将特定位(比如第25位)设置为1,请执行以下操作:
bit_array[25]=1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48450 次 |
最近记录: |