python - python 2.7中使用bytearray向中继板串口发送十六进制命令

标签 python arrays

我需要发送十六进制命令到中继板的串口。

我以前使用过如下命令:

relay.write(bytearray([0xFF]))     

这有效, 但如果我想使用像这样的变量

m = 255

relay.write(bytearray([hex (m)]))

显示错误:字符串大小必须为 1

有什么错误吗?

最佳答案

在您的第一个代码段中,[0xff] 是一个列表,其中包含以十六进制形式编写的整数 255。您可以编写 [255] 而不是 [0xff],它们编译为相同的字节码。因此,要用变量 m 替换该整数,您可以这样做

m = 255
relay.write(bytearray([m]))

FWIW,您的第一个片段也可以写为

relay.write(bytearray('\xff'))

它使用包含单个 ff 字节的十六进制字符串初始化 bytearray

bytearray([hex(m)]) 不起作用,因为 hex(255) 是一个包含四个字节的字符串:'0xff',即数字 0,后跟字母 xff

关于python - python 2.7中使用bytearray向中继板串口发送十六进制命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37787507/

相关文章:

python - 是否可以使用 argparse 将正则表达式字符串作为参数传递给 Python CLI 工具?

PHP 将数组传递给函数 - 如果未设置则保持默认值

javascript - 动态添加元素到二维数组

c - 是否需要检查没有 malloc() 声明的 C 数组的有效性?

python - 从 Python NLTK 调用时 Stanford NER 崩溃

python - Openpyxl 在保存大文件时挂起

java - 创建深拷贝方法,Java

javascript - 返回一个字符串,该字符串是所有单词连接在一起的

python - Pandas - 根据另一个列表中的索引对列表中的值求和

python - 对 Librosa.load 的 Offset 参数感到困惑