我尝试将二进制数据转换为结构:
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
但我得错了结果:
因为我需要这个:
如果我这样做,我可以得到它:
unsigned char stats_id = *(data);
unsigned short stats_length = *(data+1);
unsigned char stats_records = *(data+3);
我有很多相同的数据,我认为投射到结构是更好的方法,所以我不想使用上面的变体(或者我可以制作例外,但无论如何我想知道这个问题的解决方案)。其他铸造结构很好,所以这个结构错了。我第一次认为原因在于这种结构的对比,但用pragma进行的测试给出了相同的结果。