大小端模式及其判斷
阿新 • • 發佈:2019-01-31
大小端模式
- 通訊系統中的大小端,其實就是高位先行還是低位先行的區別,總之,規則就是傳送方和接收方必須按照同樣的順序來通訊
- 計算機領域討論的大小端,其實就是儲存系統存放資料的方式。大端模式就是高位元組儲存在低地址,小端模式就是低位元組儲存在低地址,所有的arm都是小端模式的
int a =0x12345678; //以該資料為例
- 可以發現,小端模式就是符合人類思維的一種方式,也是arm使用的方式
- 值得注意的是,大小端模式這個概念是以位元組為單位的,只考慮位元組之間的先後順序,至於單個位元組0和1的順序怎麼放,則沒有討論的意義
- 通過共用體來判斷大小端模式,先對var.b賦一個int型別的值,再讀取var.a獲取一個char型別的值,即可得知大小端模式
union s
{
char a;
int b;
}var;
- 還可以通過指標來判斷大小端模式,簡單的說就是把一個指向int地址的指標轉換為指向char地址的指標,然後把指標指向的值讀出來即
int b = 1;
char a = *((char *)(&b));
- 值得注意的是,將int變數強制型別轉換為char,這種方式無法判斷大小端模式,同樣道理位操作、位移等方法也無法判斷大小端模式,因為編譯器針對人類的思維,對這些操作做了優化