C語言 htons函式

2021-10-18 14:40:01 字數 763 閱讀 7812

uint16_t htons(uint16_t hostshort)

htons的功能:將乙個無符號短整型數值轉換為網路位元組序,即大端模式(big-endian)

引數u_short hostshort: 16位無符號整數

返回值:tcp / ip網路位元組順序

htons 是把機器上的整數轉換成「網路位元組序」, 網路位元組序是 big-endian,也就是整數的高位位元組存放在記憶體的低位址處。 而我們常用的 x86 cpu (intel, amd) 電腦是 little-endian,也就是整數的低位位元組放在記憶體的低位元組處。舉個例子吧。假定你的port是0x1234,在網路位元組序裡 這個port放到記憶體中就應該顯示成addr addr+1,也就是:0x12 0x34;而在x86電腦上,0x1234放到記憶體中實際是:addr addr+1,也就是:0x34 0x12。htons 的用處就是把實際記憶體中的整數存放方式調整成「網路位元組序」的方式。

第乙個問題:為什麼使用兩個位元組,也就是16位來儲存。

因為乙個位元組只能儲存8位2進製數,而計算機的埠數量是65536個,也就是2^16,兩個位元組。

第二個問題:為什麼計算機需要大端模式和小端模式?

小端模式 :強制轉換資料不需要調整位元組內容,1、2、4位元組的儲存方式一樣。

大端模式 :符號位的判定固定為第乙個位元組,容易判斷正負。

詳解C語言的htons函式

昨天和同事討論了一下這個函式,在網路上搜了一下,答案都是函式的基本概念,為什麼是大端模式 big endian 而沒有解釋為什麼使用大端模式 big endian 首先說明一下概念 uint16 t htons uint16 t hostshort htons的功能 將乙個無符號短整型數值轉換為網路...

在核心中C語言實現htons 函式

網路位元組順序是tcp ip中規定好的一種資料表示格式,它與具體的cpu型別 作業系統等無關,從而可以保證資料在不同主機之間傳輸時能夠被正確解釋,網路位元組順序採用big endian排序 大尾順序 方式。因為專案中需要,設定例如來自埠號為9877的資料要做些什麼處理,在上層設定了9877這個數字,...

htons函式具體解釋

part 1 htons函式具體解釋 在linux和windows網路程式設計時需要用到htons和htonl函式,用來將主機位元組順序轉換為網路位元組順序。在intel機器下,執行以下程式 int main 得到的結果是4096,初一看感覺很怪。解釋如下,數字16的16進製表示為0x0010,數字...