如何使用python编写一个可以用c读取的二进制结构?

2024-10-01 11:35:03 发布

您现在位置:Python中文网/ 问答频道 /正文

这样说一个结构:

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

如何使用python将其写入二进制文件?我想用c中的fread来读


Tags: 文件nametestonlyfor二进制float结构
1条回答
网友
1楼 · 发布于 2024-10-01 11:35:03

为什么一定是二进制的?文本是琐碎的,与之交互要简单得多。在

如果您确实需要二进制,请使用struct模块。确保定义了你的endianness,并分别读取C中的每个字段,do而不是尝试在C结构中执行一个fread()。在

你可以这样包装:

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字符串文本)。在

对于这种情况,您需要动态地分配字符串,这一点很明显。在

相关问题 更多 >