大小端导致数据差异

现象描述

测试时发现测试数据出现偏差。

问题原因

对出现偏差的数据进行分析,测试数据为整型,正常值为31(00000000 00011111),对应的偏差值为7936(000011111 00000000),大小端转换后刚好一致,且代码之前运行在PowerPC上(默认大端字节序)。

处理步骤

  1. 修改对应代码添加大小端转化,Short类型大小端转换宏实现。

     #define SWAP16(x) ((((x)& 0xFF00) >> 8) | (((x)& 0xFF00) << 8))

  2. 编译数组进行大小端转化。

     for(int i = 0;i < RESOLUTION_SIZE;i++){
    	short tmp = *(pIsmDppsDem50km + i);
    	tmp = SWAP16(tmp);
    	*(pIsmDppsDem50km + i) = tmp;
     }