ntohl()、htonl()函数
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()函数相关推荐
- c语言中htonl函数,htonl()函数学习
今天在网上看到一篇关于htonl()函数的解释,感觉有道理,贴过来大家一起学习! htonl就是把本机字节顺序转化为网络字节顺序 h---host 本地主机 to 就是to 了 n ---net ...
- htonl函数的功能_htonl()函数详解
在<Linux网络编程>这本书中提到htonl()函数的原型.实现代码如下: long htonl(long value) { return ((value <<24 )|(( ...
- htonl函数的功能_htons和htonl函数具体应用
htons和htonl函数具体应用 htons和htonl函数,是用来将主机字节顺序转换为网络字节顺序 在进行网络抓包时,抓到的包的数据是网络字节顺序,在进行编程时,要进行主机字节顺序和网络字节顺序间 ...
- htonl函数 c语言,c – 理解htonl()和ntohl()
我试图使用unix套接字测试发送一些udp数据包到localhost. 我的理解是,当设置ip地址和端口以便发送数据包时,我会将我的sockaddr_inwith填充为转换为网络字节顺序的值. 我在O ...
- java ntohl 类似函数_关于 htonl 和 ntohl 的实现
因为需要直接处理一个网络字节序的 32 位 int,所以,考虑用自己写的还是系统函数效率更高.然后又了下面的了解. 首先是系统函数 htonl ,我在 kernel 源码 netinet/in.h 找 ...
- C htonl()函数
htonl就是把本机字节顺序转化为网络字节顺序 h---host 本地主机 to 就是to 了 n ---net 网络的意思 l 是 unsigned long 所谓网络字节顺序(大尾顺序)就是指 ...
- htonl(), ntohl(), htons(), ntohs() 函数
转自:http://www.cnblogs.com/s7vens/archive/2011/12/12/2284892.html 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题 ...
- htonl(), ntohl(), htons(), ntohs() 函数具体应用
htons和htonl函数具体应用 htons和htonl函数,是用来将主机字节顺序转换为网络字节顺序 在进行网络抓包时,抓到的包的数据是网络字节顺序,在进行编程时,要进行主机字节顺序和网络字节顺序间 ...
- 模拟htonl、ntohl、htons、ntohs函数实现
模拟htonl.ntohl.htons.ntohs函数实现 2010-04-14 17:25:06| 分类: 网络编程 | 标签: |字号大中小 订阅 From: http://wxxweb.bl ...
最新文章
- Python常用模块之hashlib模块
- java throw 接口_Java基础系列-throw、throws关键字
- Python配置-virtualenv和conda的区别
- 集训01-03 (c++实现)
- MATLAB学习笔记(六)
- dos怎么退出debug_电脑主板坏了怎么办?浅谈主板常见的故障以及应对办法
- 安卓自动化测试(2)Robotium环境搭建与新手入门教程
- 全开源JAVA支付系统/jeepay聚合支付四方支付系统
- 【数字信号处理】FIR 滤波器基础理论
- 5G相关协议下载路径
- 外贸Newer必备外贸流程
- BOM:04-BOM有哪些形式?(按用途划分)
- 玩和平精英吃鸡用什么平板ipad好?
- Android天气预报项目
- 英文会议论文出版地信息汇总
- python 去掉字符串头尾及内部指定字符
- opencv读取透明图片
- linux查看进程占用pcu,ksoftirq占用PCU较高,电脑使用较卡,该如何排查问题和解决?...
- Widows(win10等等)使用过程中的 问题 与 小技巧 ----- 长期积累
- 【练习】面向对象系列(002)——双色球
热门文章
- 计算机与投影仪的记录,投影仪和二次元测量仪的区别
- surfacert能跑java么_Surface RT竟然能跑Linux!微软悄然封杀
- OLE高级文档编程技术
- 天意u盘启动盘安装linux,(BIOS+UEFI双启WINPE)天意u盘维护系统技术员版V2.1
- 长安大学计算机专业考研科目,长安大学(专业学位)计算机技术研究生考试科目和考研参考书目...
- oracle 下载 迅雷,oracle10G/11G迅雷高速下载方法
- 《数据结构》C语言版 严蔚敏版本 学习笔记
- golang:结构体定义
- 解决MYSQL导入(Excel等)或者插入中文失败
- E+H浊度传感器CUS52D-AA1BA3