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个字节。另外,确保你的永久性是正确的。 –