htonl函数的功能_htonl()函数详解
在《Linux网络编程》这本书中提到htonl()函数的原型。实现代码如下:
long htonl(long value)
{
return ((value <<24 )|((value<<8)&0x00FF0000)|((value>>8)&0x0000FF00)|(value>>24));
}
函数其实很好理解,就是小端装换成大端,因为网络地址是大端,而正常的网络地址是小端。原理很好理解,一个四个值分别为:(假设value值为0x12345678,转化后数据为:0x78563412)
1. value <<24 得到0x7800 0000
2.(value<<8)&0x00FF0000) 得到0x0056 0000
3.(value>>8)&0x0000FF00) 得到0x0000 3400
4.value>>24 得到0x0000 0012
这就是原理。
但是问题在于value <<24 和value>>24能否想要的值。
在windows的编译器上,能够成功的得到。
但是在Linux上得到的值是错误的,因为value<<24得到的值并非0x7800 0000 而是0x7812 3456
这就与想要的数据相勃。
保险起见使用一下自定义函数:
long htonl(long value)
{
return (((value <<24 )&0xFF000000)|((value<<8)&0x00FF0000)|((value>>8)&0x0000FF00)|((value>>24)&0x000000FF));
}
这样就能够保证数据的正确性。
htonl函数的功能_htonl()函数详解相关推荐
- Delphi Format函数功能及用法详解
DELPHI中Format函数功能及用法详解 DELPHI中Format函数功能及用法详解function Format(const Format: string; const Args: array ...
- php遍历视频文件,php使用glob函数遍历文件和目录详解
php glob()函数返回匹配指定模式的文件名或目录.因此我们可以使用glob函数来查找文件,也可以实现目录的遍历. 函数说明:array glob ( string $pattern [, int ...
- 站长在线Python精讲:在Python函数中的默认参数详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python函数中的默认参数详解>.本文的主要内容有:默认参数的概念和默认参数的示例.默认参数不能设置可变对象. 目录 1 ...
- 站长在线Python精讲:在Python中函数的定义与创建详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中函数的定义与创建详解>.本文的主要内容有:函数的定义.函数的定义规则.函数的创建. 目录 1.函数的定义 2 ...
- Delphi调用外部程序函数:WinExec() 和ShellExecute详解
2019独角兽企业重金招聘Python工程师标准>>> Delphi调用外部程序函数:WinExec() 和ShellExecute详解 1,WinExec(): WinExec主要 ...
- python字符串strip的作用_Python字符串函数strip()原理及用法详解
Python字符串函数strip()原理及用法详解 strip:用于移除字符串头尾指定的字符(默认为空格)或字符序列.注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符. 语法:str.s ...
- Python print函数及format()格式化输出详解
今天继续给大家介绍Python相关知识,本文主要内容是Python print函数及format()格式化输出详解. 一.print()函数基本使用 print()函数是Python中用于向控制台输出 ...
- php fopen函数php,fopen函数介绍与使用方法详解
在我们的PHP开发中会经常遇到fopen()和file_get_contents(),相信很多同学都发现这两个函数基本上都差不多,那么我们今天就来讲讲php fopen()和file_get_cont ...
- mysql通过集合查询_MySQL使用集合函数进行查询操作实例详解
本文实例讲述了MySQL使用集合函数进行查询操作.分享给大家供大家参考,具体如下: COUNT函数 SELECT COUNT(*) AS cust_num from customers; SELECT ...
最新文章
- 全球链界科技发展大会_如何成为科技界的团队合作者
- pytorch 卷积网络入门实例
- 深入浅出mysql gtid_深入理解MySQL GTID
- mysql 独立用户,MYSQL建立独立数据库以及独立数据库用户详细教程(PHPstudy MySQL-Front)...
- Dubbox服务的消费方配置
- 机器学习数据预处理之字符串转数字
- 话费充值哪里便宜?这样充帮我省了不少钱,推荐给您
- 元素周期表排列的规律_元素周期表是根据什么排列的?
- 从0开始的视频特效制作之路
- Saliency Detection: A Spectral Residual Approach 阅读笔记
- ftp服务器上传文件太慢,ftp服务器上传文件速度多少
- 伽罗华域(Galois Field,GF,有限域)乘法运算
- 安装mantis 2.14
- 【前端】微信小程序 内容安全图片校验API imgSecCheck 代码示例 图片违规校验
- Lipschitz常数、Lipschitz条件
- 关于JS获取clientWidth大小一直为0的问题
- python qt 按钮_Python QtWidgets.QPushButton方法代码示例
- CMD下添加IP地址,删除IP地址
- Directory 与 DirectoryInfo 的区别
- 用Matlab计算多项式的值