python - 字节数组转换,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
解决方案
字节数组由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
尝试附加其元素。然而,这些也是字符串。因此,期望整数的错误。
推荐阅读
- rx-swift - Completable 的 RxSwift 缓存操作符
- apache-spark - 在 Spark 2.4 上的 pyspark.sql.functions.max().over(window) 上使用 .where() 会引发 Java 异常
- gtk - 在 gtkada (GTK3) 中获取小部件的当前/默认字体
- python - 尝试删除 python 中的第一行失败?
- android-studio - 父 RecyclerView 未从子活动更改更新并取消协程支持
- javascript - 如何使用 Gulp 4 连接导入的 js 库?
- c - 在 sprintf 中使用节点元素
- python - 使用 sorted() 时键可选参数的行为
- metrics - 使用千分尺的 Datadog 事件
- java - Spring Boot 热部署 jar 并取消部署