大小端导致数据差异
现象描述
测试时发现测试数据出现偏差。
问题原因
对出现偏差的数据进行分析,测试数据为整型,正常值为31(00000000 00011111),对应的偏差值为7936(000011111 00000000),大小端转换后刚好一致,且代码之前运行在PowerPC上(默认大端字节序)。
处理步骤
- 修改对应代码添加大小端转化,Short类型大小端转换宏实现。
#define SWAP16(x) ((((x)& 0xFF00) >> 8) | (((x)& 0xFF00) << 8))
- 编译数组进行大小端转化。
for(int i = 0;i < RESOLUTION_SIZE;i++){ short tmp = *(pIsmDppsDem50km + i); tmp = SWAP16(tmp); *(pIsmDppsDem50km + i) = tmp; }
父主题: 源码修改类问题