c语言中htonl函数,htonl()函数学习

c语言中htonl函数,htonl()函数学习今天在网上看到一篇关于 htonl 函数的解释 感觉有道理 贴过来大家一起学习 htonl 就是把本机字节顺序转化为网络字节顺序 h host 本地主机 to 就是 to 了 n net 网络的意思 l 是 un

大家好,欢迎来到IT知识分享网。

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

127265638_1_20180315012728863.gif

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

h—host 本地主机

to  就是to 了

n  —net 网络的意思

l 是 unsigned long

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

int a = 0x;

int b = htonl(a);

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

&a的值为:0x0012ff44

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

&b的值为:0x0012ff40

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

由此可见,如果一个数以小尾顺序存储,经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://haidsoft.com/120881.html

(0)
上一篇 2025-10-26 21:33
下一篇 2025-10-26 22:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信