Ham*_*FzM 5 python binary bit-manipulation bitwise-operators python-2.7
我想对长度超过 100 个零和一的二进制字符串执行按位运算。我知道我可以使用类似在末尾int('1'*100, 2)
打印1267650600228229401496703205375L
字符的方法来转换它们。L
然后使用Python按位运算符,但我认为将它们转换为整数是一个坏主意。还有其他方法可以做到这一点吗?
我猜您不喜欢使用整数的想法,因为它会混淆您的基础数据。另外,它使得处理以“0”开头的字符串变得困难(因为它们在转换为整数时被修剪掉),更不用说有符号整数和字节序的微妙之处了。
尝试使用 bitarray 模块,可以使用 pip: 安装pip install bitarray
。
from bitarray import bitarray
ba1 = bitarray('0' + '1'*100)
ba2 = bitarray('1' + '0'*100)
len(ba1) # 101
len(ba2) # 101
ba1[0] # False
ba2[0] # True
ba1 | ba2 # bitarray('1111111111.......)
# get your string back
ba1.to01() # "01111111......."
Run Code Online (Sandbox Code Playgroud)
效率我不敢说。但至少你清楚自己在做什么。
也适用于 python3
文档: https: //pypi.python.org/pypi/bitarray/0.8.1
归档时间: |
|
查看次数: |
6872 次 |
最近记录: |