Python 字节数组切片的位掩码操作

Bitmask operations on slices of Python bytearrays

假设我有一个字节数组,如下所示:
mask = bytearray([0b0001, 0b0100, 0b0111]),
其中每一位代表一个特定的标志。我想像这样向掩码数组的切片添加一个标志:
mask[0:2] = mask[0:2] | 0b1000
但我得到一个 TypeError :
TypeError: unsupported operand type(s) for |: 'bytearray' and 'int'
这样做最优雅的方法是什么?

也试过这个:
masks[0:2] = bytearray([bin(m | 0b0001) for m in masks[0:2]]) 错误:
string must be of size 1

谢谢!

不借助 numpy 无法直接完成,但您可以解决它:

mask[:2] = (b | 0b1000 for b in mask[:2])

print(list(map(bin, mask)))

得到你:

['0b1001', '0b1100', '0b111']

您已经接近最后一次尝试,但是当您真正想要原始整数值时,bin 中的换行正在转换为字符串表示形式。