htons

资料百科

hto来自ns是将整型360百科变量从主机字节顺序转变成网络字节顺序, 就是整数在地址空间存储方式变为高位兰自搞守现均层夫肉字节存放在内存的低地址处

网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据父位如差别底标酒在不同主机之间传输时能够被正确解释,网络字节顺序采用big-end律项激生ian排序方式

  • 外文名称 htons
  • 应用 Windows和Linux网络编程
  • 用途 将主机字节顺序转为网络字节顺序
  • big-endian 地址的低位存储值的高位

概述

  在Windows和Linux网络编程时需要用到的,用来将主机字节顺序转化为网络字节顺序,以Windows下的代码为来自例:

  htons的功能:将一个无符号短整型的主机数值转换为网络字节顺序,即大尾顺序(big-endian)

  参数u老究总联组贵混酸终_short hostsho360百科rt:16位无符号整数

  返回值:TCP/IP网触将洲草垂乙航始参右络字节顺序.

  不同的CPU有不同的字节顺序振聚度既老固供战观坐报类型,这些字节顺序类型指的是整浓协犯属皮脸精数在内存中保存的顺序,即主机字节顺序。常见的有两种:

  序号

  英文名

  中文名

  描述

  1

  big-endian

  大尾顺序

  地址的低位存储值的高位

  2

  little-endian

  小尾顺序

  地址的低位存储值的低位

示例

  例1

  而我们常用的 消镇析转几营变审x86 CPU (intel, AMD) 电脑是 little-endian,也就是整数的食聚留弱威样低位字节放在内存的低字节处。举个例子吧。假定你的数据是0x1234,

  在网络字节顺序里 这个数据放到内存中就应该显示成

  addr addr+1

  史需特事0x12 0x34

  而在x86电脑上,数据0x1234放到欢意增伯致卫承表树己内存中实际是:

  addr addr+1

  0x34 0x12

  htons 的用处就是把实际主机内存中的整数存放方式调整成网络字节顺序。

  例2 C++代码示例

  运行的结果如图1

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

其他信息

  不同CPU上运行不同来自的操作系统,其主机字节360百科顺序也是不同,参见下表:

 传光山拿省石井科演字米 处理器

  操作系统

  字节顺序

  Alpha

  全部

  little消显玉父革丝-endian

  HP-PA

  NT

  little-endian

  HP-PA

  U师约显信入消再乱NIX

  big-endian

  Intelx86

  全部

  li生告单清河盾结还粒告鱼ttle-endian

  MIPS

  NT

  little-endian

  MIPS

  UNIX

  b城九目继斤益渐沉ig-endian

  P期言owerPC

  NT

  little-endian

  PowerPC

  非NT

  big-endian

标签:
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com