0. 問題引入
若定義 : int a = 1; 我們知道 a 在記憶體存盤時 應該為 0x 00 00 00 01,可是看記憶體里存的是 0x 01 00 00 00,這就是大小端存盤的問題,

1.什么是大小端存盤
高位元組和低位元組:

高地址和低地址:

大端模式,是指資料的高位元組保存在記憶體的低地址中,而資料的低位元組保存在記憶體的高地址中,
小端模式,是指資料的高位元組保存在記憶體的高地址中,而資料的低位元組保存在記憶體的低地址中,

2 如何測驗機器是大端模式還是小端模式
1,利用指標來測驗
1 #include <stdio.h> 2 3 int main() 4 { 5 int a = 1; 6 char *p = (char*)&a; // 用char型指標訪問第一個位元組的內容 7 8 if (*p == 1) 9 { 10 printf("小端"); 11 } 12 else 13 { 14 printf("大端"); 15 } 16 return 0; 17 }
2,利用聯合體的性質
1 #include <stdio.h> 2 int check_system() 3 { 4 union Un //聯合體共用一塊記憶體 5 { 6 char c; 7 int i; 8 }u; 9 u.i = 1; // 此時存入一個int型的值 10 return u.c; // 只讀取一個位元組 如果是 1 ,為小端,0為大端, 11 } 12 int main() 13 { 14 int a = check_system(); 15 if (a == 1) 16 { 17 printf("小端"); 18 } 19 else 20 { 21 printf("大端"); 22 } 23 return 0; 24 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/299857.html
標籤:其他
