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

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

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

第一種方法思路:

利用指針的強(qiáng)制類型轉(zhuǎn)換

#include <stdio.h>

int main()
{
    int a = 0x12345678;
    char *p = (char *)&a;//強(qiáng)制轉(zhuǎn)換取到a最低字節(jié)的地址
    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;
}

第二種方法思路:

利用共用體所有數(shù)據(jù)都從同一地址開始存儲(chǔ)。

#include <stdio.h>

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,573評(píng)論 25 708
  • 在此特此聲明:一下所有鏈接均來自互聯(lián)網(wǎng),在此記錄下我的查閱學(xué)習(xí)歷程,感謝各位原創(chuàng)作者的無私奉獻(xiàn) ! 技術(shù)一點(diǎn)一點(diǎn)積...
    遠(yuǎn)航的移動(dòng)開發(fā)歷程閱讀 11,247評(píng)論 12 197
  • 你在什么位置? 我想要離開現(xiàn)在的環(huán)境,找一個(gè)沒人認(rèn)識(shí)我的地方重新開始。就算在那里我會(huì)受盡諸多苦難。我可能會(huì)沒有住的...
    緋城閱讀 509評(píng)論 0 0