如何判斷機器CPU是大端模式還是小端模式
阿新 • • 發佈:2018-11-10
說明:這裡面涉及到本機位元組序和網路位元組序的概念。A (本機位元組序) ---- 網路位元組序 ----B(本機位元組序),其中本機位元組序就是指機器是大端還是小端,網路位元組序,我們都知道網路中會將內容封裝成流,比如TCP/IP或者是 ISO,網路位元組序是大端模式。引用網上的一張關於大小端的圖片
- 將整數儲存後再以字元讀出進行比較
#include <stdio.h> int main(void) { unsigned int a = 0x12345678; unsigned char *p =(unsigned char *) &a; int i; printf("原輸入資料為0x%0x\n", a); printf("儲存後再讀取的數為0x"); for(i=0;i<4;i++){ printf("%0x", p[i]); } printf("\n"); if(p[0] == 0x12) printf("big edition\n"); if(p[0] == 0x78) printf("little edition\n"); return 0; }
結果輸出為:
原輸入資料為0x12345678
儲存後再讀取的數為0x78563412
little edition
- 使用union的共享記憶體的機制
#include<stdio.h> union var { char str; int data; }; int main(void){ union var endian; endian.data=0x01020304; if(endian.str==0x01) { printf( "此機器是大端!\n"); } else if(endian.str==0x04){ printf("此機器是小端!\n"); } else{ printf(" 暫無法判斷此機器型別!\n"); } }