パックされたバイナリ データ (構造体の構造体として格納されている) を読み取り、それを Python オブジェクトに解析する Python C 拡張機能を作成しようとしています。すべてが 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ビットの長さ)。
くそー、あなたたちは速いです。
パトリック、私はもともと構造体パッケージを使い始めましたが、私のニーズに合わせて遅くなる方法を見つけました. さらに、Python 拡張機能を作成する言い訳を探していました。
これはばかげた質問だと思いますが、どのようなタイプに注意する必要がありますか?
ありがとう。