MQTT 使用 Python 和 paho-mqtt 发布字节数组

MQTT publishing an array of bytes using Python and paho-mqtt

我正在使用 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 来 t运行发送字节数组,将不胜感激。

使用python结构模块打包二进制数据。例如:

import struct
struct.pack('i', 53)

将产生:

'5\x00\x00\x00'

(注意:使用您的示例,“5”只是 53 的 ASCII 值)。

此外,要明确指定端序(字节顺序),请使用:

struct.pack('>i', 53)

这将产生反转的字节数:

'\x00\x00\x005'

您可以使用重复计数来指定数组。例如,'10i' 表示 10 个 32 位整数的数组,每个 4 个字节,总共 40 个字节。

有关详细信息,请参阅结构模块文档:https://docs.python.org/2.7/library/struct.html