以下是一小段代码:
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中的一个字节?
答案 0 :(得分:0)
由于bytearray中的字节是无符号的,因此按位反转运算符将始终返回负int,只需向其添加256(字节的最大值):
data = bytearray(file.read(1024))
for i in range(0, len(data)):
data[i] = ~data[i] + 256