16.3.1 字节序
(1)概述1.字节序是一个处理器架构特性,用于指定数据内部的字节如何排序2.大段:像存储字符串一样,数据的高字节存储在内存的低字节中。3.小端:与大段相反 4.有的操作系统既可以配置为大端,也可以配置为小端5.TCP/IP协议栈使用大端字节序
(2)各平台的字节序---------------------------操作系统 字节序 ---------------------------FreeBSD8.0 小端Linux3.2.0 小端Mac OS X10.6.8 小端Solaris 10 大端---------------------------
(3)处理器字节序与网络字节序转换uint32_t htonl(uint32_t hostint32); // 返回以网络字节序表示的32位整数uint16_t htons(uint16_t hostint16); // 返回以网络字节序表示的16位整数uint32_t ntohl(uint32_t netint32); // 返回以主机字节序表示的32位整数uint16_t ntohs(uint16_t netint16); // 返回以主机字节序表示的32位整数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>/*测试目的: 测试系统的字节序测试结果: sys use litter-endian
*/int main(int argc, char **argv)
{int a = 0x12345678;char first = *((char *)&a);if (first == (char)0x12)printf("sys use big-endian\n");else if(first == (char)0x78)printf("sys use litter-endian\n");elseprintf("ERROR\n");return 0;
}