python - 如何在python中解析来自套接字的二进制数据?

标签 python parsing sockets modem

我目前正在从事一个需要与微硬蜂窝调制解调器 IPn3G 通信的项目。我将调制解调器设置为通过 TCP 向我的计算机发送消息,我可以在套接字中接收消息。

消息看起来像这样:

���������DKReadyCANRogersWirelessInc. Home354626030393530302720391029547

现在,我可以识别其中的一些字段,例如 Status 或 Carrierinfo 以及最后的 imei 和 imsi。

我的问题是,我如何解析看起来很有趣的东西?我尝试过 struct,但它似乎对我没有多大帮助。

在调制解调器的文档中,我只发现了这个:

modem_event 消息结构:
  • 固定头(固定大小 20 字节)
  • 调制解调器 ID(uint64_t(8 字节))
  • 消息类型掩码(uint8_t(1 字节))
  • 保留
  • 数据包长度(uint16_t(2 字节))
    注意:数据包长度=固定头长度+消息负载长度。

  • 承运人信息:
  • 内容长度 2 BYTES (UINT16_T)
  • RSSI 1 字节 (UINT8_T)
  • 射频频段 2 字节 (UINT16_T)
  • 服务类型 STRING(1-30 字节)
  • channel 号 STRING(1-30 字节)
  • SIM 卡号 STRING(1-30 字节)
  • 电话号码 STRING(1-30 字节)

  • 对我来说,这条信息似乎与它应该是什么不一致。如果有人对如何解决这个问题提出建议,我将非常高兴。

    谢谢

    最佳答案

    Python 有很棒的 struct模块,它允许您打包和解包二进制数据。

    我明白了,您已经尝试过使用它。对于您的设备,我没有文档(去检查一下!),但我可以假设,字符串是空终止的(它们之前没有给出它们的大小)。

    获取消息的字符串部分的大小(从其他字段的大小和数据包长度)并使用 <number>s 将所有字符串读入一个 Python 字符串并拆分它们以找到空字符。

    关于python - 如何在python中解析来自套接字的二进制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358868/

    相关文章:

    python - docplex 中的敏感性分析

    python - 处理在基于类的 View 的 get_context_data 中引发的异常

    python - 需要帮助删除 python 反向三角形循环的额外线

    python - 如何使用 matplotlib 在现有绘图上绘制 float 饼图

    python - 从电子邮件地址检索域名

    javascript - JSON 解析错误,只有一个值

    C 套接字 - 消息只发送一次

    c# - 服务器客户端发送/接收多个客户端

    javascript - 是否可以在javascript中解析对象的所有公共(public)变量?

    networking - 套接字 API accept() 函数如何工作?