0
我有一個Visual Studio 2008 C++項目,我需要解碼一個結構中的6字節數據數組。將二進制數據blob解碼爲結構
我的想法是做這樣的事情:
#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
的數據是正確的永遠。
有沒有一種方法來構建我的結構來得到這個正確或我堅持單獨設置每個字段?
謝謝
你看起來像你只投入3個字節爲查理;一個32位平臺將需要4個字節。另外,確保你的永久性是正確的。 –