ファイルに書き込まれた以下の構造を持つ C++ アプリケーションがあります。pragma pack
ここで、Python を使用してそれらを非整列化する必要があります。ここでの基本的な問題は、Python でオプション を反映する方法です。
C++ 構造
#pragma pack(1)
struct abc
{
unsigned char r1;
unsigned char r2;
unsigned char p1;
unsigned int id;
};
#pragma pack()
これで、構造体のサイズはになり7 not 8
、このデータはデータ ファイルに書き込まれます。Python を使用してこのデータを取得するにはどうすればよいですか。
注:
1. 私は ctypes を使用しており、上記の構造はサンプル構造です。
ctypes は、構造体と共用体にネイティブのバイト順を使用します。ネイティブでないバイト順で構造を構築するには、BigEndianStructure、LittleEndianStructure、BigEndianUnion、LittleEndianUnion 基本クラスのいずれかを使用できます。これらのクラスにはポインター フィールドを含めることはできません
python docs からの上記の情報は、詳細を掘り下げていません。