大端法 小端法 網路位元組序 轉

2022-08-11 08:33:12 字數 1119 閱讀 4072

一般來說,大部分使用者的作業系統(如windows, freebsd,linux)是little endian

的。少部分,如mac os ,是big endian 的。

所謂msb (most significant byte)就是,乙個數字中,最重要的那位,

比如,12004,中文讀作,一萬兩千零四,那最高位的1,就表示了一萬,此處就稱作msb,最有意義的位.

而lsb (least significant byte)與msb相反,個位數4就可以稱為lsb,

在草稿紙上演算的時候,我們習慣左邊寫數的msb,右邊寫數的lsb。

使用little endian方式儲存資料時,資料的msb存放在高位址,lsb存放在低位址

比如 0x11223344 ,它在記憶體中儲存為

44 33 22 11 

低位址-->高位址

使用big endian方式儲存資料時,資料的msb存放在低位址,lsb存放在高位址

比如 0x11223344 ,它在記憶體中儲存為

11 22 33 44

低位址-->高位址

值得注意的是,大端法和小端法討論的都是位元組與位元組之間的順序,至於乙個位元組內的8個位元,無論大端法還是

小端法,順序都是一樣的,即右邊儲存低位,左邊儲存高位。再看乙個例子:

11 22 33 44

求這個數是多少?

關鍵是找出哪頭是msb,哪頭是lsb

如果該機器是little endian,

則低位址存放的是lsb,所以11是lsb,高位址是msb,所以44是msb

所以這個數等於

0x44332211

如果該機器是big endian,

則低位址存放的是msb,所以11是msb,高位址是lsb,所以44是lsb

0x11223344

這個筆試題的意思是,已知記憶體中從低位址到高位址儲存的4個位元組是

0d 00 00 00

使用小端法表示,這個數等於0x0000000d,即13。

再引申乙個問題,試寫乙個函式判斷機器是否為big endian。

思想是取乙個short數0x1122的第1個位元組,若這個位元組等於0x11,則是大端法

大端法 小端法 網路位元組序

unxi網路程式設計 定義 術語 小端 和 大端 表示多位元組值的哪一端 小端或大端 儲存在該值的起始位址。小端存在起始位址,即是小端位元組序 大端存在起始位址,即是大端位元組序。也可以說 1.小端法 little endian 就是低位位元組排放在記憶體的低位址端即該值的起始位址,高位位元組排放在...

大端法 小端法 網路位元組序

關於位元組序 大端法 小端法 的定義 也可以說 1.小端法 little endian 就是低位位元組排放在記憶體的低位址端即該值的起始位址,高位位元組排放在記憶體的高位址端。2.大端法 big endian 就是高位位元組排放在記憶體的低位址端即該值的起始位址,低位位元組排放在記憶體的高位址端。舉...

大端法 小端法 網路位元組序

關於位元組序 大端法 小端法 的定義 unxi網路程式設計 定義 術語 小端 和 大端 表示多位元組值的哪一端 小端或大端 儲存在該值的起始位址。小端存在起始位址,即是小端位元組序 大端存在起始位址,即是大端位元組序。也可以說 1.小端法 little endian 就是低位位元組排放在記憶體的低位...