1

Python3中有字节类型吗?我只知道有一个字节数组。

我想要的是,有一个 byte 0x01,然后执行 Complement Operator~结果将是0xFE,但是当我执行以下步骤时,结果是-2并且-2不能添加到 bytearray 中。

>>> data=bytearray([0x01])
>>> data
bytearray(b'\x01')
>>> ~data[0]
-2
>>> data[0]=~data[0]
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
ValueError: byte must be in range(0, 256)
4

2 回答 2

2

Python 3 有两种处理 bytes 的bytes类型:不可变的类型(类似于str)和bytearray可变的 with。如果您需要将整数转换为一个字节,您只需使用& 0xFF.

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

data[0] = ~ data[0] & 0xFF
于 2015-02-06T09:15:46.720 回答
0

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

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

有关负数的模运算的更多信息,请参阅 python 中的负数模。

于 2015-02-06T08:21:52.380 回答