大端位元組序和小端位元組序

2021-10-03 14:02:43 字數 701 閱讀 1856

計算機硬體有兩種儲存資料的方式:大端位元組序(big endian)和小端位元組序(little endian)。

舉例來說,數值0x2211使用兩個位元組(一位元組是8bit)儲存:高位位元組是0x22,低位位元組是0x11。

大端位元組序:低位位元組在高位址,高位位元組低位址上。這是人類讀寫數值的方法。

小端位元組序:與上面相反。低位位元組在低位址,高位位元組在高位址。

從上面的示意圖可以看出以下幾點:

1、以數值0x11223344為例子,從低位址到高位址,符合我們閱讀數字的一般方式,最左邊是高位數值,最右邊是低位數值,但是位址則是相反的。

2、小端序則符合低位址儲存低位資料,高位址儲存高位資料。計算機硬體內部處理往往是從低位開始處理,所以計算機內部處理資料往往是小端序。

ps:(1)採用大端序的情況比如網路傳輸和檔案儲存,在編寫網路通訊的程式時往往要將記憶體的資料轉化網路位元組序再進行資料的傳輸。

例如://轉換為二進位制的網路位元組序

saddr.sin_port = htons(port);

//將點分式轉為二進位制的網路位元組序

saddr.sin_addr.s_addr =( (ipaddr == null) ? htonl(inaddr_any) : inet_addr(ipaddr) );

大端位元組序和小端位元組序

簡單介紹 位元組序是由cpu和os對多位元組變數的記憶體儲存順序不同而產生的 小端位元組序 在表示變數的記憶體位址的起始位址存放低位元組,高位元組順序存放 大端位元組序 在表示變數的記憶體位址的起始位址存放高位元組,低位元組順序存放,例如 變數的值0xabcd uint32 t htonl 主機位元...

大端位元組序和小端位元組序

title 大端位元組序和小端位元組序 格列佛遊記 中記載了兩個征戰的強國,你不會想到的是,他們打仗竟然和剝雞蛋的姿勢有關。很多人認為,剝雞蛋時應該打破雞蛋較大的一端,這群人被稱作 大端 big endian 派 可是當今皇帝的祖父小時候吃雞蛋的時候碰巧將乙個手指弄破了。所以,他的父親 當時的皇帝 ...

大端位元組序 小端位元組序

大端位元組序 大端儲存模式是指資料的低位元組內容儲存到記憶體的高位址中,而資料的高位元組內容儲存到記憶體的低位址中 小端位元組序 小端儲存模式是指資料的低位元組內容儲存到記憶體的低位址中,而資料的高位元組內容儲存到記憶體的高位址中 程式驗證 include int main return 0 程式改...