寫個程序判斷系統是32位or64位及大端or小端字節序


1. 直接打印出指針占多少字節,4字節為32位系統,8字節為64位系統。

2. 大小端判斷:

小端:低地址存放數的低位(如:X86)

大端:低地址存放數的高位(如:網絡字節順序)

(ARM大小端都支持)

假設數0x1234從0x0000開始存放,小端順序為:

內存地址 存放內容
0x0000 0x34
0x0001 0x12

大端順序為:

內存地址 存放內容
0x0000 0x12
0x0001 0x34

采用union判斷,union的成員都是從低地址開始存放: 

union U{
    short a;
    char b;
};

int main(){
    U u;
    u.a=0x1234;
    puts(u.b==0x34?"Little endian":"Big endian");
} 

如果是在linux下,可以直接使用宏:

printf("Little endian:%d\n",__LITTLE_ENDIAN);//in stdlib.h
printf("Big endian:%d\n",__BIG_ENDIAN);
printf("mine:%d\n",__BYTE_ORDER);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM