下面是一小段代码:
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中的一个字节呢?
2条答案
按热度按时间57hvy0tb1#
由于bytearray中的字节是无符号的,按位反转操作符将始终返回一个负int,只需将256(一个字节的最大值)添加到它:
0s0u357o2#
最近遇到了这个问题,我的解决方案是: