【问题标题】:MQTT publishing an array of bytes using Python and paho-mqttMQTT 使用 Python 和 paho-mqtt 发布字节数组
【发布时间】:2017-07-18 23:19:58
【问题描述】:

我正在使用 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 传输字节数组,将不胜感激。

【问题讨论】:

    标签: python mqtt paho


    【解决方案1】:

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

    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

    【讨论】:

    • 感谢您的快速回答。解决了。​​
    猜你喜欢
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多