htonl 函式學習

2021-08-11 19:34:22 字數 887 閱讀 1163

今天在網上看到一篇關於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 

htonl 函式學習

今天在網上看到一篇關於htonl 函式的解釋,感覺有道理,貼過來大家一起學習 htonl就是把本機位元組順序轉化為網路位元組順序 h host 本地主機 to 就是to 了 n net 網路的意思 l 是 unsigned long 所謂網路位元組順序 大尾順序 就是指乙個數在記憶體中儲存的時候 高...

htonl 函式學習

今天在網上看到一篇關於htonl 函式的解釋,感覺有道理,貼過來大家一起學習 htonl就是把本機位元組順序轉化為網路位元組順序 h host 本地主機 to 就是to 了 n net 網路的意思 l 是 unsigned long 所謂網路位元組順序 大尾順序 就是指乙個數在記憶體中儲存的時候 高...

htonl 函式學習

今天在網上看到一篇關於htonl 函式的解釋,感覺有道理,貼過來大家一起學習 htonl就是把本機位元組順序轉化為網路位元組順序 h host 本地主機 to 就是to 了 n net 網路的意思 l 是 unsigned long 所謂網路位元組順序 大尾順序 就是指乙個數在記憶體中儲存的時候 高...