C/C++知识点之详解C语言的htons函数

摘要:本文主要向大家介绍了C/C++知识点之详解C语言的htons函数,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之详解C语言的htons函数,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序。

     在Intel机器下,执行以下程序

 

int main()
{
   printf("%d /n",htons(16));

      return 0;
}

得到的结果是4096,初一看感觉很怪。

    解释如下,数字16的16进制表示为0x0010,数字4096的16进制表示为0x1000。 由于Intel机器是小尾端,存储数字16时实际顺序为1000,存储4096时实际顺序为0010。因此在发送网络包时为了报文中数据为0010,需要经过htons进行字节转换。如果用IBM等大尾端机器,则没有这种字节顺序转换,但为了程序的可移植性,也最好用这个函数。

   另外用注意,数字所占位数小于或等于一个字节(8 bits)时,不要用htons转换。这是因为对于主机来说,大小尾端的最小单位为字节(byte)。

什么是大端模式(big-endian),为什么使用大端模式(big-endian)。

uint16_t htons(uint16_t hostshort);
  htons的功能:将一个无符号短整型数值转换为网络字节序,即大端模式(big-endian)
  参数u_short hostshort: 16位无符号整数
  返回值:TCP / IP网络字节顺序
  htons 是把你机器上的整数转换成“网络字节序”, 网络字节序是 bi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值