linux主機序與網路序的轉換

2021-08-24 23:40:04 字數 482 閱讀 5215

在網路通訊中,經常用到位元組序轉換,實際上核心已經幫我們實現了兩套通用的轉序巨集定義,但是在轉換過程中,都是進行主繼續與網路序的轉換,**難免冗餘,我們可以根據已經提供的特性,來新增一些執行規則,這樣就可以用乙個轉序函式實現兩種轉序,例如,htonl,既可以實現原htonl的功能,也實現了ntohl的功能,不用寫兩套轉換函式,只需要將轉序函式重新定義乙個名字就可以。定義如下,未實測。

實現的規則就是主機序是大字節序的不轉換位元組序,保持原序,主機序是小字節序的轉為網路序,即大字節序。

#ifndef _my_byte_swap_h_

#define _my_byte_swap_h_

#ifdef __cplusplus //告訴編譯器,這部分**按c語言的格式進行編譯,而不是c++的

extern "c"

#endif

#endif/* _my_byte_swap_h_ */

主機序和網路序

不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的位元組序 位址低位儲存值的低...

主機序和網路序

不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的位元組序 位址低位儲存值的低...

主機序和網路序以及使用例子

為什麼存在這兩個東西 空中傳輸的位元組的順序即網路位元組序為標準順序,考慮到與協議的一致以及與同類其它平台產品的互通,在程式中發資料報時,將主機位元組序轉換為網路位元組序,收資料報處將網路字 節序轉換為主機位元組序 網路程式開發時 或是跨平台開發時 應該注意保證只用一種位元組序 不然兩方的解釋不一樣...