假设我有一个如下所示的bytearray:
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
谢谢!
答案 0 :(得分:2)
无法在不诉诸numpy
的情况下直接完成,但您可以解决这个问题:
mask[:2] = (b | 0b1000 for b in mask[:2])
print(list(map(bin, mask)))
得到你:
['0b1001', '0b1100', '0b111']
你最后的尝试已经接近了,但当你真的想要原始整数值时,bin
中的包装正在转换为字符串表示。