博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux网络编程---htons函数的使用
阅读量:5173 次
发布时间:2019-06-13

本文共 755 字,大约阅读时间需要 2 分钟。

htons是将整型变量从主机字节顺序转变成网络, 就是整数在地址空间存储方式变为高位字节存放在内存的低地址处。

htonl就是把本机转化为网络 所谓网络(大尾顺序)就是指一个数在内存中存储的时候“高对低,低对高”(即一个数的高位字节存放于低地址单元,低位字节存放在高地址单元中)。但是计算机的内存存储数据时有可能是大尾顺序或者小尾顺序。 先举个例子: int a = 0x403214; int b = htonl(a); 我在调试这段代码,发现 &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 举例:

 

 

转载于:https://www.cnblogs.com/xuelisheng/p/9310804.html

你可能感兴趣的文章
数据结构-表
查看>>
【转载】下一代Web应用模型:Progressive Web App
查看>>
gridControl 部分属性
查看>>
Csharp: read Sybase SQL anywhere5.5 using c#
查看>>
一行代码,浏览器变临时编辑器
查看>>
This application is modifying the autolayout engine from a background threa-线程错误
查看>>
Python的索引迭代
查看>>
thinkphp3.2中模板遍历数据之标签<if condition=" ">中的数据只能用数组形式
查看>>
可设置最小时间和最大时间的24小时时间选择器
查看>>
大视角、大方向、大问题、大架构:(二)应用的相关问题
查看>>
Python standalone
查看>>
【GMT5】使用变量的时候,空格不可以乱加
查看>>
[置顶] 新博客
查看>>
按某个字段的值排序
查看>>
基于 Intraweb 和 JQuery 的开发套件
查看>>
String、ANSIString、PChar及TBytes之间的转换 BytesOf move stringof
查看>>
js中的特殊符号含义
查看>>
RedisTemplate和StringRedisTemplate的区别
查看>>
Linux下干净卸载mysql
查看>>
【转】TCP是流传输协议,UDP是包传输协议
查看>>