不同的CPU有不同的字節(jié)序類型 這些字節(jié)序是指整數(shù)在內(nèi)存中保存的順序 這個(gè)叫做主機(jī)序 最常見的有兩種 1. Little endian:將低序字節(jié)存儲(chǔ)在起始地址 2. Big endian:將高序字節(jié)存儲(chǔ)在起始地址
LE little-endian 最符合人的思維的字節(jié)序 地址低位存儲(chǔ)值的低位 地址高位存儲(chǔ)值的高位 怎么講是最符合人的思維的字節(jié)序,是因?yàn)閺娜说牡谝挥^感來(lái)說(shuō) 低位值小,就應(yīng)該放在內(nèi)存地址小的地方,也即內(nèi)存地址低位 反之,高位值就應(yīng)該放在內(nèi)存地址大的地方,也即內(nèi)存地址高位
BE big-endian 最直觀的字節(jié)序 地址低位存儲(chǔ)值的高位 地址高位存儲(chǔ)值的低位 為什么說(shuō)直觀,不要考慮對(duì)應(yīng)關(guān)系 只需要把內(nèi)存地址從左到右按照由低到高的順序?qū)懗? 把值按照通常的高位到低位的順序?qū)懗? 兩者對(duì)照,一個(gè)字節(jié)一個(gè)字節(jié)的填充進(jìn)去
例子:在內(nèi)存中雙字0x01020304(DWORD)的存儲(chǔ)方式
內(nèi)存地址 4000 4001 4002 4003 LE 04 03 02 01 BE 01 02 03 04
注: 1、網(wǎng)絡(luò)與主機(jī)字節(jié)轉(zhuǎn)換函數(shù):htons ntohs htonl ntohl (s 就是short l是long h是host n是network) 2、不同的CPU上運(yùn)行不同的操作系統(tǒng),字節(jié)序也是不同的,參見下表。 處理器 操作系統(tǒng) 字節(jié)排序 Alpha 全部 Little endian HP-PA NT Little endian HP-PA UNIX Big endian Intelx86 全部 Little endian <-----x86系統(tǒng)是小端字節(jié)序系統(tǒng) Motorola680x() 全部 Big endian MIPS NT Little endian MIPS UNIX Big endian PowerPC NT Little endian PowerPC 非NT Big endian <-----PPC系統(tǒng)是大端字節(jié)序系統(tǒng) RS/6000 UNIX Big endian SPARC UNIX Big endian IXP1200 ARM核心 全部 Little endian