一.理解大端存儲和小端存儲的概念
1).大端存儲:大端模式,是指數據的高字節保存在內存的低地址中,而數據的低字節保存在內存的高地址中,這樣的存儲模式有點兒類似於把數據當作字符串順序處理:地址由小向大增加,而數據從高位往低位放。
2).小端存儲:小端模式,是指數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中,這種存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低,和我們的邏輯方法一致。
如果將一個32位的整數0x12345678存放到一個整型變量(int)中,這個整型變量采用大端或者小端模式在內存中的存儲由下表所示。
為簡單起見,本文使用OP0表示一個32位數據的最高字節MSB(Most Significant Byte),使用OP3表示一個32位數據最低字節LSB(Least Significant Byte)。
小端:較高的有效字節存放在較高的存儲器地址,較低的有效字節存放在較低的存儲器地址。
大端:較高的有效字節存放在較低的存儲器地址,較低的有效字節存放在較高的存儲器地址。
代碼測試
1 #include <stdio.h> 2 3 void BigLittleEndian() 4 { 5 int i = 1; 6 char *p = (char *)(&i); 7 if( *p == 1) 8 printf("LittleEndian"); 9 else 10 printf("BigEndian"); 11 } 12 13 void main() 14 { 15 BigLittleEndian(); 16 }