在《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()函数详解相关推荐

  1. Delphi Format函数功能及用法详解

    DELPHI中Format函数功能及用法详解 DELPHI中Format函数功能及用法详解function Format(const Format: string; const Args: array ...

  2. php遍历视频文件,php使用glob函数遍历文件和目录详解

    php glob()函数返回匹配指定模式的文件名或目录.因此我们可以使用glob函数来查找文件,也可以实现目录的遍历. 函数说明:array glob ( string $pattern [, int ...

  3. 站长在线Python精讲:在Python函数中的默认参数详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python函数中的默认参数详解>.本文的主要内容有:默认参数的概念和默认参数的示例.默认参数不能设置可变对象. 目录 1 ...

  4. 站长在线Python精讲:在Python中函数的定义与创建详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中函数的定义与创建详解>.本文的主要内容有:函数的定义.函数的定义规则.函数的创建. 目录 1.函数的定义 2 ...

  5. Delphi调用外部程序函数:WinExec() 和ShellExecute详解

    2019独角兽企业重金招聘Python工程师标准>>> Delphi调用外部程序函数:WinExec() 和ShellExecute详解 1,WinExec(): WinExec主要 ...

  6. python字符串strip的作用_Python字符串函数strip()原理及用法详解

    Python字符串函数strip()原理及用法详解 strip:用于移除字符串头尾指定的字符(默认为空格)或字符序列.注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符. 语法:str.s ...

  7. Python print函数及format()格式化输出详解

    今天继续给大家介绍Python相关知识,本文主要内容是Python print函数及format()格式化输出详解. 一.print()函数基本使用 print()函数是Python中用于向控制台输出 ...

  8. php fopen函数php,fopen函数介绍与使用方法详解

    在我们的PHP开发中会经常遇到fopen()和file_get_contents(),相信很多同学都发现这两个函数基本上都差不多,那么我们今天就来讲讲php fopen()和file_get_cont ...

  9. mysql通过集合查询_MySQL使用集合函数进行查询操作实例详解

    本文实例讲述了MySQL使用集合函数进行查询操作.分享给大家供大家参考,具体如下: COUNT函数 SELECT COUNT(*) AS cust_num from customers; SELECT ...

最新文章

  1. 全球链界科技发展大会_如何成为科技界的团队合作者
  2. pytorch 卷积网络入门实例
  3. 深入浅出mysql gtid_深入理解MySQL GTID
  4. mysql 独立用户,MYSQL建立独立数据库以及独立数据库用户详细教程(PHPstudy MySQL-Front)...
  5. Dubbox服务的消费方配置
  6. 机器学习数据预处理之字符串转数字
  7. 话费充值哪里便宜?这样充帮我省了不少钱,推荐给您
  8. 元素周期表排列的规律_元素周期表是根据什么排列的?
  9. 从0开始的视频特效制作之路
  10. Saliency Detection: A Spectral Residual Approach 阅读笔记
  11. ftp服务器上传文件太慢,ftp服务器上传文件速度多少
  12. 伽罗华域(Galois Field,GF,有限域)乘法运算
  13. 安装mantis 2.14
  14. 【前端】微信小程序 内容安全图片校验API imgSecCheck 代码示例 图片违规校验
  15. Lipschitz常数、Lipschitz条件
  16. 关于JS获取clientWidth大小一直为0的问题
  17. python qt 按钮_Python QtWidgets.QPushButton方法代码示例
  18. CMD下添加IP地址,删除IP地址
  19. Directory 与 DirectoryInfo 的区别
  20. 用Matlab计算多项式的值

热门文章

  1. 171109 逆向-SWPU(re400)
  2. 苹果应用商店审核_苹果应用商店审核流程更新:给开发者申诉的机会
  3. 7-1 求两点之间距离
  4. 小程序+音视频2:live-player
  5. 发送邮件常见出错代码
  6. Android 自定义底部导航栏消息显示
  7. 北京双线机房的一些分析
  8. P3371P4779 dijk板子
  9. 【人工智能】深度学习、数据库选择和人工智能的革命;人工智能是解锁IoT潜力的钥匙
  10. PTA实验11-1-7 藏头诗 (15 分)