我需要发送以将十六进制命令发送到继电器板的串行端口。
我以前使用过这样的命令:
relay.write(bytearray([0xFF]))
这奏效了,但是如果我想使用这样的变量
m = 255
和
relay.write(bytearray([hex (m)]))
其显示错误:string must be of size 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
,后跟字母x
、f
和f
。