首页 > 解决方案 > 字节数组转换,python3上需要整数错误

问题描述

在 0x00 十六进制位置上要求一个整数,python3

>>> command = bytearray()
>>> command.extend(chr(0x00))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: an integer is required

标签: pythonarrayspython-3.x

解决方案


字节数组由bytes( b'\x00') 或字节大小int的 s ( 0x00) 组成。然而,结果chr(0x00)是一个 unicode 字符串。

您可以bytearray.extend使用 a) 字节字符串或 b) 字节大小整数的可迭代来提供。这两个都代表“字节序列”,abytearray就是。此外,两者都可以与十六进制表示法一起使用。

command.extend(b'\x00')
command.extend([0x00])

如果要添加单个整数,还可以使用bytearray.append

command.append(0x00)

由于字符串是可迭代的,因此bytearray.extend尝试附加其元素。然而,这些也是字符串。因此,期望整数的错误。


推荐阅读