在网络编程中,往往会遇到字节的网络顺序和主机顺序的问题。
我们先来了解下字节的网络顺序和主机顺序:

网络字节序与主机字节序
主机字节序:就是我们平常说的大端和小端模式,不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序,这个叫做主机序。引用标准的Big-Endian和Little-Endian的定义如下:
  a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
  b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
  
网络字节序:4个字节的32 bit值以下面的次序传输,首先是0~7bit,其次8~15bit,然后16~23bit,最后是24~31bit。这种传输次序称作大端字节序。由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。字节序,顾名思义字节的顺序,就是大于一个字节类型的数据在内存中的存放顺序,一个字节的数据没有顺序的问题了。

在Linux系统下:htons(), htonl(), ntohs(), ntohl()的头文件及函数定义:

  #include <arpa/inet.h> uint16_t htons(uint16_t hostshort);   //将主机的无符号短整形数转换成网络字节顺序uint32_t htonl(uint32_t hostlong);    //将主机的无符号长整形数转换成网络字节顺序。uint16_t ntohs(uint16_t netshort);   //将一个无符号短整形数从网络字节顺序转换为主机字节顺序。  uint32_t ntohl(uint32_t netlong);    // 将一个无符号长整形数从网络字节顺序转换为主机字节顺序。

htons(), htonl(), ntohs(), ntohl()相关推荐

  1. Windows下Qt使用htons,htonl,ntohs,ntohl

    pro文件加上: LIBS += -lws2_32 源代码包含头文件: #include <WinSock2.h>

  2. 模拟htonl、ntohl、htons、ntohs函数实现

    模拟htonl.ntohl.htons.ntohs函数实现 2010-04-14 17:25:06|  分类: 网络编程 |  标签: |字号大中小 订阅 From: http://wxxweb.bl ...

  3. 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs

    Part 1: htons函数具体解释      在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序. 在Intel机器下,执行以下程序 i ...

  4. ntohs, ntohl, htons,htonl

    ntohs, ntohl, htons,htonl的比较和详解 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs( ...

  5. 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs【转】

    (转自:https://blog.csdn.net/kulala082/article/details/53431473) Part 1: htons函数具体解释 在Linux和Windows网络编程 ...

  6. 使用宏模拟htonl、ntohl、htons、ntohs的实现

    文章转自:htonl.ntohl.htons.ntohs函数实现 typedef unsigned short int uint16;typedef unsigned long int uint32; ...

  7. htonl,htons 和 ntohs相关问题

    htonl函数是一个网络转换的函数,他把不确定的一个32位数字,转换成网络通用的32位数字,即大头在后的方式. 我们一般使用的计算机都是大头在后,也就是高地址在后面的形式. 比如你定义一个整型变量 i ...

  8. 【VS开发】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)

    1.htonl ()和ntohl( ) u_long PASCAL FAR ntohl (u_long netlong); u_short PASCAL FAR ntohs (u_short nets ...

  9. 【网络】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)

    1.htonl ()和ntohl( ) u_long PASCAL FAR ntohl (u_long netlong); u_short PASCAL FAR ntohs (u_short nets ...

最新文章

  1. 20165235 第十周课下补做
  2. LeetCode_database刷题记录(182. 查找重复的电子邮箱)
  3. java语言生日蛋糕代码_AcWing 168. 【Java】生日蛋糕
  4. 功能自动化接入持续集成方案
  5. 跨库访问-dblink
  6. 软件测试三五七原则,运动前必看!“三五七”原则和注意事项
  7. 良心安利东方 rpg游戏制作大师素材网站
  8. 利用lavarel框架实现Todos App
  9. BOM 定时器+回调函数
  10. 【Android】使用MPAndroidChart过程中BarChart的几点心得
  11. 朱晔的互联网架构实践心得S1E8:三十种架构设计模式(下)
  12. 触摸屏 触摸操作 鼠标点击事件
  13. EasyExcel 固定(冻结)单元格
  14. Verilog AXI Components
  15. python语言画四叶草的程序_python绘图四叶草_后端开发
  16. 计算机excel2010知识点,Excel-模拟分析和图表知识点讲解-计算机二级Office
  17. ubuntu下制作window启动盘(官方)
  18. 个人简历制作时的自我评价应该怎么写?
  19. 单片机作业 可乐浇汁 “苦乐交织”
  20. win7计算机连接xp计算机,浅析win7系统电脑连接共享xp打印机教程

热门文章

  1. 使用CSS设置重叠层次
  2. Python3读写txt文件
  3. Content Delivery Networks CDN 内容分发网络
  4. 【矩阵论】07——线性变换——线性变换的矩阵
  5. 探索:制药厂系统网络时钟同步(NTP时间同步服务器)
  6. python设置excel边框_python win32com excel边框格式
  7. HTML中关于<br>,<P>换行符的区别和使用影响
  8. [2] OPC UA信息建模
  9. Anaconda安装使用
  10. Kafka——Sender 线程分析