Python3中是否有字节类型?我只知道有一个bytearray。
我想要的是,有一个字节0x01
,然后做补充运算符~
,结果将是0xFE
,但是当我执行以下步骤时,结果是<{1}}和-2
无法添加到bytearray中。
-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。