【发布时间】: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 的解包代码。另外,我不确定格式中的空格是做什么的。无论如何,发送的实际字节值是多少?接收到的字节值是多少?