您的位置:首页 > 运维架构 > Linux

《Linux环境下C编程指南(第二版)》 2012-10-27读书笔记 字节序汇总

2012-10-27 15:17 274 查看
《Linux环境下C编程指南(第二版)》p256

计算机在内存中的数据存储方式有两种:一种是小端字节序,即内存低地址存储数据低字节,高地址存储数据高字节;另外一种是大端字节序,即内存低地址存储数据高字节,而高地址存储数据低字节。

如下图所示:



网络字节序使用的是大端字节序。某个给定系统所采用的是字节序是主机字节序,他可能是小端字节序(xp、ubuntu等),也可能是大端字节序(aix)。在网络协议中处理多字节数据(比如int类型数据)采用的都是网络字节序,而不是主机字节序。要把主机字节序和网络字节序相对应,就要用到提供主机字节序和网络字节序之间相互转换功能的函数。
#include <netinet/in.h>
uint16_t htons(uint16_t hostvalue);
uint32_t htonl(uint32_t hostvalue);
返回网络字节序

#include <netinet/in.h>
uint16_t ntohs(uint16_t netvalue);
uint32_t ntohl(uint32_t netvalue);
返回主机字节序

以上函数中,h表示host,n表示network,s表示short,l表示long。一般情况下,使用htos和ntohs转换端口号,使用htonl和ntohl转换IP地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: