大小端定义:小端的低位数据存储在低位地址,大端的低位数据存储在高位地址。(即小端同低同高,大端相反)
1 oee@copener:~/workspace/test/littlebigendian$ gcc -o littlebigendian littlebigendian.c 2 oee@copener:~/workspace/test/littlebigendian$ ./littlebigendian 3 b=0x78 4 little-endian
1 /************************************************************************* 2 > File Name: littlebigendian.c 3 > Author: copener 4 > Mail: hanmingye@foxmail.com 5 > Created Time: 2015年05月21日 星期四 09时36分20秒 6 ************************************************************************/ 7 8 #include<stdio.h> 9 10 int main(void) 11 { 12 union endian { //定义一个共用体,共用体里面成员共用同一块内存 13 unsigned int a; 14 char b; 15 } Test; 16 17 Test.a = 0x12345678; //引用共用体成员,给整型数赋值1 18 if (Test.b == 0x78 ){ //判断另外一个字符型共用体成员的值 19 printf("b=0x%X\nlittle-endian\n",Test.b); 20 }else{ 21 printf("b=0x%X\nbig-endian\n",Test.b); 22 } 23 return 0; 24 } 25 26 27 28 /***************************************************************************************** 29 0x12345678 78为低位, 30 Little-endian: 31 address: 0x00000000 0x00000001 0x00000002 0x00000003 32 unsigned int a: 78 56 34 12 33 char b: 78 34 35 Big-endian: 36 address: 0x00000000 0x00000001 0x00000002 0x00000003 37 unsigned int a: 12 34 56 78 38 char b: 12 39 40 41 说明: 42 在C中,联合体数据成员都是从低地址开始存放的。 43 小端:数据低位存低地址 44 大端:数据低位存高地址 45 46 *****************************************************************************************/