大小端测试C实现
1 int is_little_endian(void)//判断是否是小端的函数 2 { 3 union check_fun 4 { 5 int a; 6 char b; 7 }u1; 8 9 u1.a=1;//先将1(实际上就是0x0001)这个低字节放在存储空间的低位上 10 return u1.b;//这里实际上是进行了类型的强制装换 11 }
1 int main() 2 3 { 4 int i=1; 5 char *b=(char *)&i;//char是一个字节,强制将char 类型的b指向i,则b指向的一定是i的低地址 6 7 if(*b==1) 8 printf("little\n"); 9 else 10 printf("big\n"); 11 return 0; 12 }
通常记住xp是小端
而KEIL-C51则为大端模式。
很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。