htonl()函数学习
来源:互联网 发布:矩阵a2是什么意思 编辑:程序博客网 时间:2024/06/06 16:31
今天在网上看到一篇关于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
阅读全文
0 0
- htonl()函数学习
- htonl()函数学习
- htonl()函数学习
- htonl()函数学习
- htonl(),htons(),inet_addr(),inet_ntoa()函数
- htonl(),htons(),inet_addr(),inet_ntoa()函数
- htonl(),htons(),inet_addr(),inet_ntoa()函数
- htonl(),htons(),inet_addr(),inet_ntoa()函数
- htonl(),htons(),inet_addr(),inet_ntoa()函数
- htonl(), ntohl(), htons(), ntohs() 函数
- htonl(),htons(),inet_addr(),inet_ntoa()函数
- htonl(), ntohl(), htons(), ntohs() 函数
- htonl(),htons(),inet_addr(),inet_ntoa()函数
- htonl(), ntohl(), htons(), ntohs() 函数
- htonl
- htonl()
- htonl
- htonl
- Palindrome Partitioning II
- 编译Android下可执行命令的FFmpeg
- 涂鸦-草稿:堆排序(1)
- Leetcode 50 Pow(x, n)
- 安装好hadoop集群后,报错如下n org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /data/hadoop-roo
- htonl()函数学习
- JTable表头排序后,row获取错乱的问题解决
- C++学习日志之二—贪吃蛇网游化框架搭建2
- 明日工作中需要用到的两个方法 java中File的基本使用
- 同步代码块、同步方法、锁总结
- MapReduce八股文模板
- Healthy Holsteins 健康的好斯坦奶牛
- webpack搭建ES6环境
- 获取当前iOS版本号