【问题标题】:Unpacking a C struct with Pythons struct module使用 Python 结构模块解压 C 结构
【发布时间】:2016-04-12 06:53:35
【问题描述】:

我正在将二进制格式的结构从 C 发送到我的 python 脚本。

我的 C 结构:

struct EXAMPLE {
    float val1;
    float val2;
    float val3;
}

我如何发送它:

struct EXAMPLE *ex;
ex->val1 = 5.3f;
ex->val2 = 12.5f;
ex->val3 = 15.5f;

write(fd, &ex, sizeof(struct EXAMPLE));

我如何收到:

buf = sock.recv(12)
buf = struct.unpack('f f f', buf)
print buf

但是当我在 python 端打印出来时,我得到的只是随机垃圾。我很确定 python 中的结构定义有问题,但我不确定是什么。

【问题讨论】:

  • 我建议检查您发送/接收的字节顺序
  • ex已经是一个指针,然后你正在写入指针的地址。
  • 你的 C 结构也可能有填充,你需要通知 Python 的解包代码。另外,我不确定格式中的空格是做什么的。无论如何,发送的实际字节值是多少?接收到的字节值是多少?

标签: python c struct


【解决方案1】:

这一行是错误的:

write(fd, &ex, sizeof(struct EXAMPLE));

应该是:

write(fd, ex, sizeof(struct EXAMPLE));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多