Visual Studio 2008 C ++プロジェクトがあり、6バイトのデータ配列を構造体にデコードする必要があります。
私の考えはこのようなことをすることでした:
#pragma pack( push, 1 )
struct Map
{
BYTE alpha : 8;
BYTE bravo : 8;
UINT charlie : 24;
BYTE delta : 8;
BYTE padding0 : 8; // ensure correct byte boundary
BYTE padding1 : 8;
};
#pragma pack( pop )
// sizeof( Map ) == 8 bytes
BYTE test_data[ 6 ] = { 0x07, // alpha
0x0B, // bravo
0x00, // charlie high byte
0x00, // charlie med byte
0x01, // charlie low byte
0x33 }; // delta
Map map = { };
memcpy( &map, test_data, sizeof( test_data ) );
ASSERT( map.alpha == 0x07 );
ASSERT( map.bravo == 0x0B );
ASSERT( map.charlie == 0x01 );
ASSERT( map.delta == 0x33 );
しかし、のデータは決して正しくありませんcharlie
。delta
これを正しくするために構造体を構造化する方法はありますか、それとも各フィールドを個別に設定するのに行き詰まっていますか?
ありがとう