記憶體大小端和網路位元組序

2021-07-24 03:55:26 字數 526 閱讀 4124

背景原因:c語言中除了8bit的char,還有16bit short型,32bit long型,16bit or 32bit int型變數。由於16位32位cpu的暫存器寬度大於乙個位元組8bit,那麼必然存在如何將多個位元組安排的問題。因此就導致大端儲存模式和小端儲存模式。

簡而言之:

如定義16位int i=0x1234

網路位元組序:

tcp/ip協議規定了在網路上必須採用網路位元組順序,先收到的位元組為高位,最後收到的位元組為地位,也就是大端模式。由於資料傳輸的兩端對應不同的硬體平台,採用的儲存位元組順序可能不一致。char型只佔1位元組,無所謂大端和小端。而對於非char型,必須在資料傳送到網路上之前將其轉換成大端模式。

基於x86cpu的計算機使用是小端模式。大部分作業系統(windows、linux)都是小端模式。少部分,如mac os是大端模式。

大小端模式和網路位元組序

概念 在幾乎所有的機器上,多位元組物件都被儲存為連續的位元組序列。例如在c語言中,乙個型別為int的變數x位址為0x100,那麼其對應位址表示式 x的值為0x100。且x的四個位元組將被儲存在儲存器的0x100,0x101,0x102,0x103位置。大端位元組序 在記憶體中,低位址存放資料的高位,...

大小端 網路位元組序 本地位元組序問題

總結 1 80x86使用小端法 即本地位元組序 網路位元組序使用大端法。2 二進位制的網路程式設計中,傳送資料,最好以unsigned char,unsigned short,unsigned int 來處理,unsigned short unsigned short 以網路位元組序處理後再拷貝到傳...

位元組序和大小端

大多數處理器中記憶體是可以以位元組為單位進行定址的,當資料型別 int,long 大於1個位元組時,其所占用就的位元組在記憶體中的順序存在兩種模式,分別是小端模式 little endian 和大端模式 big endian 小端模式低位位元組存放在低位址,大端模式高位位元組存放在低位址。大端模式的...