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

《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地址。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值