我需要发送以将十六进制命令发送到中继板的串行端口。
我之前使用的命令如下:
relay.write(bytearray([0xFF]))
这很有效, 但如果我想使用像
这样的变量m = 255
和
relay.write(bytearray([hex (m)]))
显示错误:string must be of size 1
错误是什么?
答案 0 :(得分:1)
在您的第一个代码段中,[0xff]
是一个包含以十六进制形式编写的整数255的列表。您可以编写[255]
而不是[0xff]
,它们编译为相同的字节码。所以要用变量m
替换那个整数,你可以做
m = 255
relay.write(bytearray([m]))
FWIW,您的第一个片段也可以写成
relay.write(bytearray('\xff'))
使用包含单个bytearray
字节的十六进制字符串初始化ff
。
bytearray([hex(m)])
赢了,因为hex(255)
是一个包含四个字节的字符串:'0xff'
,即数字0
,后跟字母{{ 1}},x
和f
。