struct.pack('i f 16s', id, score, name.encode()) 和 struct.unpack('i f 16s', data),其中'i'对应int32_t、'f'对应float、'16s'对应char[16],总长24字节,需确保小端序与C一致。

Python 的 struct 模块能准确读写 C 结构体二进制数据,但必须严格对齐字节序、类型大小和内存布局——它不解析 C 头文件,也不自动处理 padding,所有结构定义需手动翻译并验证。
怎样用 struct.pack() 和 struct.unpack() 对应 C 的 struct
核心是把 C 结构体字段逐个映射为 struct 格式符,并确保总字节数一致。比如 C 中:
typedef struct {
int32_t id;
float score;
char name[16];
} record_t;
对应 32 位小端平台(如 x86 Linux),需写成 '<i4f16s>(<code>i 是有符号 int,默认 4 字节;f 是 float,4 字节;16s 是 16 字节 bytes):
struct.pack('<i4f16s b> 生成 24 字节二进制</i4f16s>struct.unpack('<i4f16s data> 返回 <code>(123, 95.5, b'alice\x00...')- 注意:C 的
char[16]必须用bytes填充,str会报错;未填满时要用