字節順序的大端與小端

 一個16位的整數,由兩個字節組成。內存中存儲這個兩個字節有兩種方法:一種是將低位字節存儲在起始地址,這種方式稱爲小端(little-endian)字節序;另一種是將高位字節存儲在起始地址,這種方式稱爲大端(big-endian)字節序。編程

 

  在網絡編程、系統設計、彙編中可能會涉及到大端小端問題。網絡

 

  下面一個簡單C程序能夠判斷出你所使用的機器是大端仍是小端spa

  

#include<stdio.h>

int  main(int argc, char const *argv[])
{
    union              //採用union的以不一樣方式表示數據
    {
        short s;
        char c[sizeof(short)];       
    }un;

    un.s=0x0102;
    printf("char is %lu byte\n  ",sizeof(char) );
    if(sizeof(short)==2)
    {
        if((un.c[0]==1) && (un.c[1]==2) )
        {
            printf("big-endian\n" );
        }
        else if((un.c[0]==2) && (un.c[1]==1) )
        {
            printf("little-endian\n");
        }
        else
        {
            printf("unknown\n");
        }
    }
    else
    {
        printf("sizeof(short)== %lu\n",sizeof(short));
    }
    return 0;
}

 

  參考:Unix網絡編程設計

相關文章
相關標籤/搜索