大小端定义:小端的低位数据存储在低位地址,大端的低位数据存储在高位地址。(即小端同低同高,大端相反)

 

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 *****************************************************************************************/