字节序大端小端是针对超过一个byte的数据类型在内存中的存储布局来讲的。
对于小端处理器,如果要寻址一个word型数据,处理器首先由地址总线发出地址,之后对于由32位数据总线(32位处理器)返回的数据,小端处理器认为0-7位数据线是低端数据,而24-31位数据线为高端数据。
相反,对于大端处理器,寻址一个word型数据,处理器对于数据线返回的数据,认为24-31位数据线为低端数据,而0-7位数据线为高端数据。
首先说明内存本身是没有字节序一说的,但是对于内存中同样一段数据,小端处理器读出来的数据意义和大端处理器读出来的数据意义是不同的,所以其存储数据的顺序是由处理器字节序来决定的。
0x1234
大端模式:低地址存放高字节。低-->高 0x12,0x34
小端模式:低地址存放低字节。低-->高 0x34,0x12
通常我们说的主机序(Host Order)就是遵循Little-Endian规则。所以
当两台主机之间要通过TCP/IP协议进行通信的时候就需要调用相应的函数进行主机
序(Little-Endian)和网络序(Big-Endian)的转换。
//如何判断主机是大端还是小端 #include<stdio.h> int main() { unsigned int a = 0x1234; unsigned char b = *(char*)(&a); if(b == 0x12) printf("大端 "); else printf("小端 "); }