bytearray 的二进制反转值

Knu*_*nut 3 python operators

我想反转(翻转位;二进制不是)字节数组的所有值。我试过这个:

for index in xrange(len(data)):
    data[index] = ~data[index]
Run Code Online (Sandbox Code Playgroud)

这失败了,因为 p.ex. 0 得到 -1 然后:

Traceback (most recent call last):
    ...
    data[index] = ~data[index]
ValueError: byte must be in range(0, 256)
Run Code Online (Sandbox Code Playgroud)

Kev*_*vin 5

您可以使用所有值的位掩码对每个值进行异或:

data[index] ^= 0b11111111
Run Code Online (Sandbox Code Playgroud)

或者:

data[index] ^= 0xFF
Run Code Online (Sandbox Code Playgroud)