Python3字节级位操作

时间:2015-02-06 08:16:52

标签: python byte bytearray bit complement

Python3中是否有字节类型?我只知道有一个bytearray。

我想要的是,有一个字节0x01,然后做补充运算符~,结果将是0xFE,但是当我执行以下步骤时,结果是<{1}}和-2无法添加到bytearray中。

-2

2 个答案:

答案 0 :(得分:1)

Python 3有两种处理字节的类型:bytes类型,它不可变(类似于str),而bytearray具有可变性。如果需要将整数转换为一个字节,只需使用& 0xFF取8个低位。

所以你的最后一行应该是:

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

答案 1 :(得分:0)

您可以使用~data[0]模256来获得正确移位的值:

>>> data = bytearray([0x01])
>>> data[0] = ~data[0]%256
>>> data
bytearray(b'\xfe')

有关负数的模运算的更多信息,请参阅negative numbers modulo in python