2

说一个这样的结构:

typedef struct testVertex_s {
       char *vert_name; //for test only...
       float x;
       float y;
       float z;
}testvertex_t;

如何使用 python 将其写入二进制文件?我想在 c 中使用 fread 阅读它;

4

1 回答 1

8

为什么必须是二进制的?文本是微不足道的,并且更容易与之交互。

如果您真的想要二进制文件,请使用struct模块。确保定义你的字节顺序,并在 C 中分别读取每个字段,不要尝试将单个字段fread()放入 C 结构中。

您可以像这样进行包装:

import struct
out = open("myvertex.bin", "wb")
string = "hello"
fmt = "<%usfff" % (1 + len(string))
out.write(struct.pack(fmt, string, 3.14, 47.11, 17))

这会将字符串写为一个以 0 结尾的普通字符串,紧接着是浮点数。上面的结果数据是"hello\x00\xc3\xf5H@\xa4p<B\x00\x00\x88A"(表示为 Python 字符串文字)。

对于这种情况,您当然需要动态分配字符串,这应该是显而易见的。

于 2012-12-14T10:58:12.463 回答