htonl()函數學習

來源:互聯網
上載者:User

標籤:style   blog   color   os   資料   div   sp   log   on   

今天在網上看到一篇關於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()函數學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.