【APUE】字节序

字节序是一个处理器架构特性,用于指示像整数这样的大数据类型内部的字节如何排序。

大端字节序和小端字节序

如果处理器架构支持大端字节序(big-endian),最低有效字节(Least Significant Byte)包含最大字节地址。小端字节序(little-endian)则相反,最低有效字节包含最小字节地址。

注意:不管字节序如何,最高有效字节(Most Significant Type)总在左边,最低有效字节总在右边。

大端:

nn+1n+2n+3
MSBLSB

小端:

n+3n+2n+1n
MSBLSB

网络字节序

网络协议指定了字节序,因此异构计算机系统能够交换协议信息而不会被字节序所混淆。TCP/IP协议栈使用大端字节序(把接收到的第一个字节当作最高有效字节看待,这就要求发送端发送的第一个字节是高位字节)。所以,网络字节序(NBO)是大端字节序。

对于TCP/IP应用程序,有四个用来处理器字节序(主机字节序)(NBO)和网络字节序之间的实施转换函数:

#include <arpa/inet.h>

unit32_t htonl(unit32_t hostint32);		//返回以网络字节序表示的32位整数

unit16_t htons(unit16_t hostint16);		//返回以网络字节序表示的16位整数

unit32_t ntohl(unit32_t netint32);		//返回以主机字节序表示的32位整数

unit16_t ntohs(unit16_t netint16);		//返回以主机字节序表示的16位整数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值