不同 CPU 中,4 位元組整數 1 在記憶體空間的儲存方式是不同的。4 位元組整數 1 可用 2 進位制表示如下:
00000000 00000000 00000000 00000001
有些 CPU 以上面的順序儲存到記憶體,另外一些 CPU 則以倒序儲存,如下所示:
00000001 00000000 00000000 00000000
若不考慮這些就收發資料會發生問題,因為儲存順序的不同意味著對接收資料的解析順序也不同。
大端序和小端序
CPU 向記憶體儲存資料的方式有兩種:
-
大端序(Big Endian):高位位元組存放到低位地址(高位位元組在前)。
-
小端序(Little Endian):高位位元組存放到高位地址(低位位元組在前)。
僅憑描述很難解釋清楚,不妨來看一個範例。假設在 0x20 號開始的地址中儲存 4 位元組 int 型資料 0x12345678,大端序 CPU 儲存方式如下圖所示:
圖1:整數 0x12345678 的大端序位元組表示