Скажем, у меня есть ByteArray как следующее:
mask = bytearray([0b0001, 0b0100, 0b0111])
,
, где каждый бит представляет собой определенный флаг. Я хотел бы добавить флаг срезы массива маски, как так:
mask[0:2] = mask[0:2] | 0b1000
, но я получаю TypeError:
TypeError: unsupported operand type(s) for |: 'bytearray' and 'int'
, что будет наиболее элегантным способом сделать это?операции Bitmask на срезах Python ByteArray,
Пробовал это, а также:
masks[0:2] = bytearray([bin(m | 0b0001) for m in masks[0:2]])
с ошибкой:
string must be of size 1
Спасибо!
Спасибо, я даже не думал о numpy. Я могу сделать что-то вроде: 'masks [0: 2] = np.bitwise_or (маски [0: 2], 0b0001)', а затем увидеть мои измененные флаги с помощью 'map (np.binary_repr, masks)' – user5283407