#pragma pack(1)フィールドを定義し、6-bitそれを と仮定すると、間違った動作に行き詰まりました8-bit。この質問を読んで問題を解決しましたが、まったく役に立ちません。
Visual Studio 2012では、文字structを保存するために次のように定義しました。Base64
#pragma pack(1)
struct BASE64 {
CHAR cChar1 : 6;
CHAR cChar2 : 6;
CHAR cChar3 : 6;
CHAR cChar4 : 6;
};
でサイズを取得しましsizeofたが、結果は期待したものではありません:
printf("%d", sizeof(BASE64)); // should print 3
結果 :4
私はそれが得られることを期待していました3(なぜなら6 * 4 = 24、24ビットは3バイトだからです)
1-bit代わりにフィールドでテストし、正しいサイズ(1バイト)を得たイベント:
#pragma pack(1)
struct BASE64 {
CHAR cChar1 : 2;
CHAR cChar2 : 2;
CHAR cChar3 : 2;
CHAR cChar4 : 2;
};
実際、なぜ6-bitと仮定する8-bitの#pragma pack(1)ですか?