Big endian machine: It thinks the first byte it reads is the biggest.
Little endian machine: It thinks the first byte it reads is the littlest.
举个例子,从内存地址0x0000开始有以下数据
0x0000 0x12
0x0001 0x34
0x0002 0xab
0x0003 0xcd
如果我们去读取一个地址为0x0000的四个字节变量,若字节序为big-endian,则读出
结果为0x1234abcd;若字节序位little-endian,则读出结果为0xcdab3412.
如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为
big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x23 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
x86系列CPU都是little-endian的字节序.
1 #include<stdio.h>
2
3 int main()
4 {
5 int x=1;
6 /*the first method */
7 if(*(char *) &x==1)
8 printf("little/n");
9 else
10 printf("big/n");
11 /*the second method*/
12 x = (char)x;
13 if(x == 1)
14 printf("little/n");
15 else
16 printf("big/n");
17
18 /*the third method*/
19 union
{
21 int i;
22 char c[sizeof(int)];
23 }y;
24 y.i =1;
25 if(y.c[0] == 1)
26 printf("little/n");
27 else
28 printf("big/n");
29
30 }