Linux學習 通訊 位元組序

2021-09-23 23:41:52 字數 1147 閱讀 4526

1. 概念

位元組在電腦中存放時的序列與輸入(輸出)時的序列是先到的在前還是後到的在前。

2. 常見字節序

little endian(小端位元組序):將低序位元組儲存在起始位址

big endian(大端位元組序):將高序位元組儲存在起始位址

網路位元組序:相當於大端位元組序

3. 大小端儲存例項

假設乙個32位 unsigned int型資料0x12 34 56 78,

0x12 34 56 78模擬工資¥12 34 56 78 ,12代表的數值金額比78 大 12就是高位元組,78就是低位元組

大端儲存方式為 0x12 34 56 78(低位址存高位元組)

小端儲存方式為 0x78 56 34 12(低位址存低位元組)

4.大小端判斷

①字元指標判斷

在32位平台下,int佔4個位元組,而char型別的指標是佔乙個位元組的,如果我們把int強傳為char型別的指標,只會儲存乙個位元組的資料,那麼我們只需要判斷char裡面的第乙個位元組和int裡面的第乙個位元組是否是一致即可判斷。

如果一致則為小端模式,反之為大端模式。

#include #include using namespace std;

int main()

else

return 0;

}

②聯合體判斷

由於聯合體所有資料共享一塊位址空間,存放資料的所有成員都是從低位址開始存放,所以我們可以在聯合體內定義乙個int和乙個char型別變數,然後在外部例項化的時候建立int變數,用char變數呼叫,相當於隱式型別轉化,如果結果為1,則低位元組存放在低位址,既是小端機器,反之大端機器。

//聯合體union的存放順序是從低位址開始存放的

include using namespace std;

union test

;int main()

else

return 0;

}

位元組序學習

位元組序是指當乙個資料的長度超過乙個位元組時的儲存順序。比如乙個int型的資料,所佔的位元組數為4,那麼在儲存的時候第乙個位元組的位址為0x00b8f9f0,這個int資料占用的四個位元組的位址為0x00b8f9f0,0x00b8f9f1,0x00b8f9f2,0x00b8f9f3。但是對於a的四個...

Linux 主機位元組序與網路位元組序

現在的cpu累加器一次能夠裝載至少4個位元組的乙個整數,那麼位元組在記憶體中的排列順序不同,導致累加器使用的結果不同,這就是位元組序問題 例如 我們儲存乙個int型別的數字 int a 1 大端位元組序 整數的高位位元組存放在記憶體的低位址位。小端位元組序 整數的低位位元組存放在記憶體位址的低位址為...

linux網路位元組序

不同的cpu有不同的儲存資料方法,分為大端方式與小端方式!小端 低位位元組存放在記憶體的低位址!大端 高位位元組存放在記憶體的高位址。因為現代pc機大都採用小端模式存放資料,故小端位元組序又名主機位元組序!有序通訊雙方位元組序有可能有差異,這就導致有可能接收資料後處理發生錯誤!故人們在傳送資料時,統...