高分求解一个绝对有难度的问题!!!
有一个数组 const unsigned char c[] = {数组元素这里不写出来了,因为很大,等下会给出需要的元素值};
已知
int i = 49;
char[i] = 0x81;
char[i+1] = 0x00;
char[i+2] = 0x6c;
现在执行下面的语句
unsigned int addr=(c[i+1]<<8)|c[i+2];
printf("addr = %08x \n",addr);
问题出现来了!
我在little机(这里在个人电脑上的vc平台上编译的)上打印出的c[i+1] = 0x00;c[i+2]= 0x6c; addr的值为0x0000006c;
然后我移植到big机(在自己的芯片编译)上时c[i+1] = 0x00;c[i+2] = 0x6c 打印出的addr的值为0x8047e8d0;
如果手动计算的话 值应该是0x0000006c; 但是为什么会出现addr的值为0x8047e8d0的这种情况(照理说就算是字节高低位顺序相反,也不可能差别这么大啊!).
请高手帮忙分析下出现的原因.