字节序又称为主机字节序,是指计算机中多字节整型数据的存储方式。字节序有两种:大端(高位字节存储在低位地址,低位字节存储在高位地址)和小端(高位字节存储在高位地址,低位字节存储在低位地址)。在网络通信中,发送方和接收方有可能使用不同的字节序,为了保证数据接收后能正确的解析处理,统一规定:数据以高位字节优先顺序在网络上传输。因此数据在发送前和接收后都需要在主机字节序和网络字节序之间转换。
一般主机的字节序采用小端存储,而网络字节序则是大端存储。验证的示例代码如例所示。
1 #include <stdio.h>
2
3 int main(int argc, const char *argv[])
4 {
5 int a = 0x12345678;
6 char *p;
7
8 p = (char *)&a;
9
10 printf("*p = %#x\n", *p);
11
12 if(*p = 0x78){
13 printf("小端存储\n");
14 }
15 else{
16 printf("大端存储\n");
17 }
18 return 0;
19 }
运行结果如下,可知本次实验主机采用的是小端存储。
linux@Master:~/1000phone$ ./a.out
*p = 0x78
小端存储