今天在网上看到一篇关于htonl()函数的解释,感觉有道理,贴过来大家一起学习!

htonl就是把本机字节顺序转化为网络字节顺序

h---host 本地主机

to  就是to 了

n  ---net 网络的意思

l 是 unsigned long

所谓网络字节顺序(大尾顺序)就是指一个数在内存中存储的时候“高对低,低对高”(即一个数的高位字节存放于低地址单元,低位字节存放在高地址单元中)。但是计算机的内存存储数据时有可能是大尾顺序或者小尾顺序。先举个例子:

int a = 0x403214;

int b = htonl(a);

我在VC++6.0调试这段代码,发现

&a的值为:0x0012ff44

其中0x0012ff44、0x0012ff45、0x0012ff46、0x0012ff47这四个单元的值依次为:14、32、40、00,即0x403214这个数的高位部分存放在高位地址中,低位部分存放在低位地址中,即小尾顺序。

&b的值为:0x0012ff40

其中0x0012ff40、0x0012ff41、0x0012ff42、0x0012ff43这四个单元的值依次为:00、40、32、14,即把原数0x403214的高位部分存放在低位地址中,低位部分存放在高位地址中。

由此可见,如果一个数以小尾顺序存储,经htonl函数调用后这个数的高地位字节会完全颠倒过来成为一个新的数。这个新的数在机器内部其实还是以小尾顺序存储的,但是相对于原来的数而言相当于是变成大尾顺序的了。

long型的0x40写完整为:0x 00 00 00 40,共四个字节,调用htonl后四个字节颠倒顺序,为0x 40 00 00 00。

同样,0x40 00 00 00调用htonl后变为0x 00 00 00 40,即0x40

c语言中htonl函数,htonl()函数学习相关推荐

  1. C 语言中 char[] 的操作函数

    C语言中char[]的操作函数 1.赋值操作 在C语言中,char型数组是不可以直接赋值的.例如在如下的代码中,会得到错误: char c1[20] = "women"; char ...

  2. c语言printf函数的作用,c语言中printf用法及其函数定义

    c语言中printf用法及其函数定义 发布时间:2020-04-09 10:51:14 来源:亿速云 阅读:354 作者:小新 今天小编给大家分享的是c语言中printf用法及其函数定义,很多人都不太 ...

  3. c语言中val是什么函数,val(val是什么意思)

    有这么一个C语言程序 : int i; long val; for(i=0;i 在C语言中Val是一个将由数字符号(包括正负号.小数点)组成的字符型数据转换成相应的数值型数据的函数,语法格式是Val( ...

  4. c语言中fmod()函数和log10()函数用法

    C语言中fmod函数的功能是x/y的求余运算,适用于double ,float,long double,如果y=0的话,那么返回 值得一提的是%,'%'同样是取余,但是% 适用于整数取余,%是整数的取 ...

  5. c语言getchar函数的作用,c语言中getchar的用法函数用法

    当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止.下面小编就跟你们详细介绍下c语言中getchar的用法,希望对你们有用. c语言中getchar ...

  6. c语言中srand的作用,C语言中srand(), rand(), time()函数  转载

    srand函数 srand函数是随机数发生器的初始化函数. 原型:void srand(unsigned seed); 用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子,后面的r ...

  7. C语言中fputc和fgetc函数用法

    C语言中文件的读写函数之 fputc.fgetc 首先,我们要知道fputs和fgetc这两个函数是包含在标准库函数中的函数,换句话说,就是封装在标准函数中的两个函数.其中这两个函数都是每次只能输入或 ...

  8. c语言中mul是什么函数,mul函数的具体用法

    匿名用户 1级 2010-12-26 回答 PHP基础 Author:陈庆平 (Andych) E-mail:ahut9923@126.com 一.PHP入门 二.PHP变量 1.php变量的命名 变 ...

  9. c语言中函数形参值改变了,相应的实参值是否改变,C语言中,如何利用函数和指针变量通过形参变量的值改变实参变量的值...

    必备知识:c语言中的函数调用和指针变量的相关知识 众所周知,函数是C语言中一个十分重要的模块,因为函数的存在,使得C语言的可读性.可维护性.可移植性大大提高.因此,想要学好C语言,必须要学好函数.函数 ...

  10. C语言中strand() rand() time()函数的简单介绍及获取随机数的方法

    rand()函数简介 功 能 :伪随机数发生器 所属库:stdlib.h 用 法 :需要先调用srand初始化,一般用当前日历时间初始化随机数种子,这样每行代码都可以产生不同的随机数. 函数原型:in ...

最新文章

  1. 连接SQLite 创建ADO.net实体类
  2. PHP 接收 UDP包_PHP早已不是十年前的鸟样!!!
  3. 噩耗...............
  4. 最大字段和 冲出暴力枚举
  5. 双循环格局对话国际农民丰收节交易会 谋定农业贸易高质量
  6. 从信息检索顶会CIKM'20看搜索、推荐与计算广告新进展
  7. 在Ubuntu中为root用户启用界面登录
  8. swoft php怎么样,[原创]Swoole和Swoft的那些事 (Http/Rpc服务篇)
  9. Linux内核hlist数据结构分析
  10. Mysql查询性能优化
  11. java企业员工管理系统_java企业员工考勤管理系统
  12. 计算机boot指令,BCDBoot 命令行选项
  13. 傲梅分区助手克隆Linux硬盘,傲梅分区助手如何复制磁盘?分区助手克隆磁盘的具体教程...
  14. python十进制转换_python 十进制转换成任意进制
  15. centOS7下实践查询版本/CPU/内存/硬盘容量等硬件信息
  16. 0x80073712_处理win10更新提示错误代码“0x80073712”的方法
  17. 车载大屏仪表用什么软件开发的
  18. 温湿度传感器的学习笔记
  19. UltraEdit各种wordfile下载
  20. c++实现二分查找法和求平方根

热门文章

  1. 互联网公司忽悠员工的那些黑话。。。你入坑了没?
  2. JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
  3. jitsi-meet安卓端进入房间就断开连接
  4. 在 Ubuntu 上添加或删除 PPA 存储库
  5. 客快物流大数据项目(一百一十七):网关 Spring Cloud Gateway
  6. 红帽linux5.8系统修复,大神为你分析win7系统VNC客户端连接RedHatLinuxAS5.8的修复方案...
  7. 如何用代码来快速批量下载人教社中小学电子教材
  8. xbox360游戏下载_Xbox Live游戏玩家API
  9. Parity check(奇偶校验)
  10. C语言文件操作-总是打不开文本文档