后来经过讨论发现是自己错了!! 对Jerry Cain表示歉意!!!
原因:是大小尾不同导致的,intel 是小尾的,顺序得调换一下,stanford 应该用的是大尾的,所以它那边儿读出了非零的部分。
对于自己大端小端测试如下:
#include<stdio.h>
int main()
{
int a = 0x12345678;
char b=*(char*)&a;
if(b==0x78)
printf("小端\n");
else
printf("大端\n");
return 0;
}
发现自己的是小端,所以输出0,而stanford应该大端所以输出非0.
至于大端小端解释如下:
大端格式:
在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中
小端格式:
与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。