htons函數具體解釋

在Linux和Windows網絡編程時需要用到htons和htonl函數,用來將主機字節順序轉換爲網絡字節順序。

     在Intel機器下,執行以下程序

int  main( )
{
   printf(
" %d /n " ,htons( 16 ));
      return 0;
}

得到的結果是4096,初一看感覺很怪。

    解釋如下,數字16的16進製表示爲0x0010,數字4096的16進製表示爲0x1000。 由於Intel機器是小尾端,存儲數字16時實際順序爲1000,存儲4096時實際順序爲0010。因此在發送網絡包時爲了報文中數據爲0010,需要 經過htons進行字節轉換。如果用IBM等大尾端機器,則沒有這種字節順序轉換,但爲了程序的可移植性,也最好用這個函數。

   另外用注意,數字所佔位數小於或等於一個字節(8 bits)時,不要用htons轉換。這是因爲對於主機來說,大小尾端的最小單位爲字節(byte)。

 

 

原文:http://blog.csdn.net/zouxinfox/archive/2007/10/07/1814088.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章