python 无法按位反转字节数组

bihw5rsg  于 2023-02-28  发布在  Python
关注(0)|答案(2)|浏览(205)

下面是一小段代码:

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中的一个字节呢?

57hvy0tb

57hvy0tb1#

由于bytearray中的字节是无符号的,按位反转操作符将始终返回一个负int,只需将256(一个字节的最大值)添加到它:

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

0s0u357o2#

最近遇到了这个问题,我的解决方案是:

data[i] = ~data[i] & 0xFF

相关问题