天天看點

主機位元組順序

不同的CPU有不同的位元組序類型 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 

最常見的有兩種:

1. Little endian:将低序位元組存儲在起始位址 

2. Big endian:将高序位元組存儲在起始位址 

LE little-endian 

最符合人的思維的位元組序 

位址低位存儲值的低位 

位址高位存儲值的高位 

怎麼講是最符合人的思維的位元組序,是因為從人的第一觀感來說 

低位值小,就應該放在記憶體位址小的地方,也即記憶體位址低位 

反之,高位值就應該放在記憶體位址大的地方,也即記憶體位址高位 

BE big-endian 

最直覺的位元組序 

位址低位存儲值的高位 

位址高位存儲值的低位 

為什麼說直覺,不要考慮對應關系 

隻需要把記憶體位址從左到右按照由低到高的順序寫出 

把值按照通常的高位到低位的順序寫出 

兩者對照,一個位元組一個位元組的填充進去

例子:在記憶體中雙字0x01020304(DWORD)的存儲方式 

記憶體位址 

4000 4001 4002 4003 

LE 04 03 02 01 

BE 01 02 03 04 

例子:如果我們将0x1234abcd寫入到以0x0000開始的記憶體中,則結果為 

big-endian little-endian 

0x0000 0x12 0xcd 

0x0001 0x34 0xab 

0x0002 0xab 0x34 

0x0003 0xcd 0x12 

x86系列CPU都是little-endian的位元組序.

原文:http://blog.chinaunix.net/uid-790245-id-2037563.html

人就像是被蒙着眼推磨的驢子,生活就像一條鞭子;當鞭子抽到你背上時,你就隻能一直往前走,雖然連你也不知道要走到什麼時候為止,便一直這麼堅持着。