大端字序節和小端自序節就是咱們所說的大端模式和小端模式 小端字節序就是低地址存儲數的低位字節。大端字節序正好相反。 舉個例子。加入有 int a = 0x01000002; 假設變量a在內存的地址爲:0x00000001;//這只是爲了理解,真實的程序中,是不會存儲到這的。 a佔4個字節。它是int類型。 也就是0x00000001 0x00000002 0x00000003 0x00000004這4個內存地址。 小端字節序會這樣存儲。 0x00000004 0x01 0x00000003 0x00 0x00000002 0x00 0x00000001 0x02 大端字節序則會以下存儲 0x00000004 0x02 0x00000003 0x00 0x00000002 0x00 0x00000001 0x01 這個題目是在《linux_C編程一站式學習》中的題目. 題目:編寫一個程序,測試運行它的平臺是大端字節序仍是小端字節序。 這個題目能夠利用 union一個特性求解。 就是共用體中成員變量共享一個地址。 例如: union { char a; int b; } s; 這s.a和s.b的地址是同樣的,只是變量大小不一樣。 根據這個性質寫出下面程序: #include int main(int argc, char** argv) { union { char a; int b; } s; s.b =0x02000001; printf("%X/n", (int)s.a); return 0; } 若是是小端字節序則,輸出爲1. 不然爲2. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 其實這個問題還能夠用強制轉換來完成,就是將一個int類型到數據轉換爲char類型到數據,看輸出 #include void main() { int i = 0x02000001; char *pch = (char *) &i; printf("%X/n",*pch); }