我正在使用paho-mqtt在Python中创建MQTT测试,我需要能够向我的代理发送一个字节数组。订阅者查找不同数据类型的多个主题。基于字符串的有效负载工作正常但数值必须以字节数组的形式接收数字类型的正确长度(即32位整数必须是4字节的数组)
例如,要发送32位整数(INT32),有效负载将为00 00 00 00
如果我想发送小数53,我需要发送00 00 00 35(0x35 = 53)
由于此测试作为套件的一部分运行,因此需要使用Python,而paho-mqtt是我们选择的mqtt软件包。
如果有人能告诉我如何使用paho-mqtt传输一个字节数组,我们将不胜感激。
答案 0 :(得分:1)
使用python struct模块打包二进制数据。例如:
import struct
struct.pack('i', 53)
将产生:
'5\x00\x00\x00'
(注意:' 5'只是53的ASCII值,使用你的例子)。
另外,要明确指定endian-ness(字节顺序),请使用:
struct.pack('>i', 53)
这将产生相反的字节:
'\x00\x00\x005'
您可以使用重复计数来指定数组。例如,' 10i'表示10个32位整数的数组,每个4字节,总共40个字节。
有关更多信息,请参阅struct module文档:https://docs.python.org/2.7/library/struct.html