我正在尝试编写一个 Python C 扩展来读取打包的二进制数据(它存储为结构的结构),然后将其解析为 Python 对象。在 32 位机器上一切正常(二进制文件总是写在 32 位架构上),但不是在 64 位机器上。有这样做的“首选”方式吗?
要发布很多代码,但作为示例:
struct
{
WORD version;
BOOL upgrade;
time_t time1;
time_t time2;
} apparms;
File *fp;
fp = fopen(filePath, "r+b");
fread(&apparms, sizeof(apparms), 1, fp);
return Py_BuildValue("{s:i,s:l,s:l}",
"sysVersion",apparms.version,
"powerFailTime", apparms.time1,
"normKitExpDate", apparms.time2
);
现在在 32 位系统上这很好用,但在 64 位上,我的 time_t 大小不同(32 位与 64 位长)。
该死的,你们这些人速度很快。
帕特里克,我最初开始使用 struct 包,但发现它只是为了满足我的需要而减慢速度。另外,我正在寻找编写 Python 扩展的借口。
我知道这是一个愚蠢的问题,但我需要注意哪些类型?
谢谢。