C語言判斷機器CPU大小端模式的兩種方法

C語言判斷機器CPU大小端模式的兩種方法

本文介紹使用C語言編寫程序判斷機器CPU大小端模式的兩種方法。

第一種方法思路:

利用指針的強制類型轉換

#include <stdio.h>

int main()
{
    int a = 0x12345678;
    char *p = (char *)&a;//強制轉換取到a最低字節的地址
    if (*p == 0x78) {
        //a  12 34 56 78(Hex)
        //*p          78
        printf("little endian\n");
    }
    else if (*p == 0x12) {
        //a  78 56 34 12(Hex)
        //*p          12
        printf("big endian\n");
    }
    return 0;
}

第二種方法思路:

利用共用體所有數據都從同一地址開始存儲。

#include <stdio.h>

union test_union//用于測試的共用體
{
    int a;//元素a,占4個字節
    char b;//元素b,占1個字節,b在內存中的地址為a最低字節的地址
} test;

int main()
{
    test.a = 0x12345678;
    if (test.b == 0x78) {
        //test.a 12 34 56 78(Hex)
        //test.b          78
        //b在內存中的地址為a最低字節的地址
        printf("little endian\n");
    }
    else if (test.b == 0x12){
        //test.a 78 56 34 12(Hex)
        //test.b          12
        //b在內存中的地址為a最低字節的地址
        printf("big endian\n");
    }
    return 0;
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,589評論 25 708
  • 在此特此聲明:一下所有鏈接均來自互聯網,在此記錄下我的查閱學習歷程,感謝各位原創作者的無私奉獻 ! 技術一點一點積...
    遠航的移動開發歷程閱讀 11,247評論 12 197
  • 你在什么位置? 我想要離開現在的環境,找一個沒人認識我的地方重新開始。就算在那里我會受盡諸多苦難。我可能會沒有住的...
    緋城閱讀 509評論 0 0