定义
大端 一个Word中的高位的Byte放在内存中这个Word区域的低地址处。
小端 一个Word中的低位的Byte放在内存中这个Word区域的低地址处。
判断CPU是大端或小端
1 #include <stdio.h> 2 3 int main() 4 { 5 union w 6 { 7 int a; //4 bytes 8 char b; //1 byte 9 } c; 10 11 c.a=1; 12 13 if (c.b==1) 14 printf("It is Little_endian!\n"); 15 else 16 printf("It is Big_endian!\n"); 17 18 return 1; 19 }
说明:
1 在c中,联合体(共用体)的数据成员都是从低地址开始存放。
2 若是小端模式,由低地址到高地址c.a存放为0x01 00 00 00,c.b被赋值为0x01;
————————————————————————————
地址 0x00000000 0x00000001 0x00000002 0x00000003
c.a 01 00 00 00
c.b 01 00
————————————————————————————
3 若是大端模式,由低地址到高地址c.a存放为0x00 00 00 01,c.b被赋值为0x0;
————————————————————————————
地址 0x00000000 0x00000001 0x00000002 0x00000003
c.a 00 00 00 01
c.b 00 00
————————————————————————————
TCP/IP协议栈用的是大端。