ntohl()将一个无符号长整形数从网络字节顺序转换为主机字节顺序, ntohl()返回一个以主机字节顺序表达的数。ntohl()返回一个以主机字节顺序表达的数。

htonl()将主机数转换成无符号长整型的网络字节顺序。本函数将一个32位数从主机字节顺序转换成网络字节顺序。

#include<stdio.h>typedef unsigned short uint16;
typedef unsigned long  uint32;
//短整形高低字节交换
#define Swap16(A) ((((uint16)(A) & 0xff00) >> 8) | (((uint16)(A) & 0x00ff) << 8))
//长整形高低字节交换
#define Swap32(A) ((((uint32)(A) & 0xff000000) >> 24) | \(((uint32)(A) & 0x00ff0000) >>  8) | \(((uint32)(A) & 0x0000ff00) <<  8) | \(((uint32)(A) & 0x000000ff) << 24))static union {   char c[4];   unsigned long mylong;
} endian_test = {{ 'l', '?', '?', 'b' } };  /******************************************************************************
ENDIANNESS返回结果l:小端模式b:打断模式
******************************************************************************/
#define ENDIANNESS ((char)endian_test.mylong)  //将主机的无符号短整形数转换成网络字节顺序
uint16 htons(uint16 hs)
{return (ENDIANNESS=='l') ? Swap16(hs): hs;
}//将主机的无符号长整形数转换成网络字节顺序
uint32 htonl(uint32 hl)
{return (ENDIANNESS=='l') ? Swap32(hl): hl;
}//将一个无符号短整形数从网络字节顺序转换为主机字节顺序
uint16 ntohs(uint16 ns)
{return (ENDIANNESS=='l') ? Swap16(ns): ns;
}//将一个无符号长整形数从网络字节顺序转换为主机字节顺序
uint32 ntohl(uint32 nl)
{return (ENDIANNESS=='l') ? Swap32(nl): nl;
}int main()
{uint16 hs=0x1234;uint32 hl=0x12345678;printf(" htons(0x%4x) = 0x%4x\n",hs,htons(hs));printf(" ntons(0x%4x) = 0x%4x\n",hs,ntohs(hs));printf(" htonl(0x%8x) = 0x%8x\n",hl,htonl(hl));printf(" ntohl(0x%8x) = 0x%8x\n",hl,ntohl(hl));return 0;
}

ntohl()、htonl()函数相关推荐

  1. c语言中htonl函数,htonl()函数学习

    今天在网上看到一篇关于htonl()函数的解释,感觉有道理,贴过来大家一起学习! htonl就是把本机字节顺序转化为网络字节顺序 h---host 本地主机 to  就是to 了 n  ---net ...

  2. htonl函数的功能_htonl()函数详解

    在<Linux网络编程>这本书中提到htonl()函数的原型.实现代码如下: long htonl(long value) { return ((value <<24 )|(( ...

  3. htonl函数的功能_htons和htonl函数具体应用

    htons和htonl函数具体应用 htons和htonl函数,是用来将主机字节顺序转换为网络字节顺序 在进行网络抓包时,抓到的包的数据是网络字节顺序,在进行编程时,要进行主机字节顺序和网络字节顺序间 ...

  4. htonl函数 c语言,c – 理解htonl()和ntohl()

    我试图使用unix套接字测试发送一些udp数据包到localhost. 我的理解是,当设置ip地址和端口以便发送数据包时,我会将我的sockaddr_inwith填充为转换为网络字节顺序的值. 我在O ...

  5. java ntohl 类似函数_关于 htonl 和 ntohl 的实现

    因为需要直接处理一个网络字节序的 32 位 int,所以,考虑用自己写的还是系统函数效率更高.然后又了下面的了解. 首先是系统函数 htonl ,我在 kernel 源码 netinet/in.h 找 ...

  6. C htonl()函数

    htonl就是把本机字节顺序转化为网络字节顺序 h---host 本地主机 to  就是to 了 n  ---net 网络的意思 l 是 unsigned long 所谓网络字节顺序(大尾顺序)就是指 ...

  7. htonl(), ntohl(), htons(), ntohs() 函数

    转自:http://www.cnblogs.com/s7vens/archive/2011/12/12/2284892.html 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题 ...

  8. htonl(), ntohl(), htons(), ntohs() 函数具体应用

    htons和htonl函数具体应用 htons和htonl函数,是用来将主机字节顺序转换为网络字节顺序 在进行网络抓包时,抓到的包的数据是网络字节顺序,在进行编程时,要进行主机字节顺序和网络字节顺序间 ...

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

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

最新文章

  1. Python常用模块之hashlib模块
  2. java throw 接口_Java基础系列-throw、throws关键字
  3. Python配置-virtualenv和conda的区别
  4. 集训01-03 (c++实现)
  5. MATLAB学习笔记(六)
  6. dos怎么退出debug_电脑主板坏了怎么办?浅谈主板常见的故障以及应对办法
  7. 安卓自动化测试(2)Robotium环境搭建与新手入门教程
  8. 全开源JAVA支付系统/jeepay聚合支付四方支付系统
  9. 【数字信号处理】FIR 滤波器基础理论
  10. 5G相关协议下载路径
  11. 外贸Newer必备外贸流程
  12. BOM:04-BOM有哪些形式?(按用途划分)
  13. 玩和平精英吃鸡用什么平板ipad好?
  14. Android天气预报项目
  15. 英文会议论文出版地信息汇总
  16. python 去掉字符串头尾及内部指定字符
  17. opencv读取透明图片
  18. linux查看进程占用pcu,ksoftirq占用PCU较高,电脑使用较卡,该如何排查问题和解决?...
  19. Widows(win10等等)使用过程中的 问题 与 小技巧 ----- 长期积累
  20. 【练习】面向对象系列(002)——双色球

热门文章

  1. 计算机与投影仪的记录,投影仪和二次元测量仪的区别
  2. surfacert能跑java么_Surface RT竟然能跑Linux!微软悄然封杀
  3. OLE高级文档编程技术
  4. 天意u盘启动盘安装linux,(BIOS+UEFI双启WINPE)天意u盘维护系统技术员版V2.1
  5. 长安大学计算机专业考研科目,长安大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  6. oracle 下载 迅雷,oracle10G/11G迅雷高速下载方法
  7. 《数据结构》C语言版 严蔚敏版本 学习笔记
  8. golang:结构体定义
  9. 解决MYSQL导入(Excel等)或者插入中文失败
  10. E+H浊度传感器CUS52D-AA1BA3