将二进制数据转换为结构后的错误数据

时间:2015-01-13 15:45:49

标签: c++ pointers struct

我尝试将二进制数据转换为结构:

struct stats {
    unsigned char stats_id;
    unsigned short stats_length;
    unsigned char stats_records;
};

stats *p = (stats*)data; //data - char pointer to char buffer with binary data

但我得错了结果:
enter image description here

因为我需要这个:
enter image description here

如果我这样做,我可以得到它:

unsigned char stats_id = *(data);
unsigned short stats_length = *(data+1);
unsigned char stats_records = *(data+3);

我有很多相同的数据,我认为投射到结构是更好的方法,所以我不想使用上面的变体(或者我可以制作例外,但无论如何我想知道这个问题的解决方案)。其他铸造结构很好,所以这个结构错了。我第一次认为原因在于这种结构的对比,但用pragma进行的测试给出了相同的结果。

0 个答案:

没有答案