デフォルトでは、StructureとUnionのフィールドはCコンパイラが行うのと同じ方法で
アライメントされています。サブクラスを定義するときに_pack_クラス属性を
指定することでこの動作を変えることは可能です。
このクラス属性には正の整数を設定する必要があり、フィールドの最大アライメントを指定します。
これはMSVCで#pragma pack(n)
が行っていること同じです。
ctypes
はStructureとUnionに対してネイティブのバイトオーダーを使います。
ネイティブではないバイトオーダーの構造体を作成するには、BigEndianStructure、
LittleEndianStructure、BigEndianUnionおよびLittleEndianUnionベースクラスの中の一つを
使います。これらのクラスにポインタフィールドを持たせることはできません。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。