无法按位反转bytearray

时间:2017-04-18 07:33:25

标签: python python-2.7

以下是一小段代码:

data = bytearray(file.read(1024))
for i in range(0, len(data)):
    data[i] = ~data[i]

但由于某种原因,这不起作用!我一直在for循环中获得ValueError: byte must be in range(0, 256)。我不明白,不是一个字节的按位反转仍然是一个字节的大小??

我添加print type(data[i])只是为了看看发生了什么,并说int !! int如何适应python中的一个字节?

1 个答案:

答案 0 :(得分:0)

由于bytearray中的字节是无符号的,因此按位反转运算符将始终返回负int,只需向其添加256(字节的最大值):

data = bytearray(file.read(1024))
for i in range(0, len(data)):
    data[i] = ~data[i] + 256