[C] Little Endian or Big Endian

  • 最近遇到個 Endian Issue, 回顧自己對 Endian的印象
  • Little Endian 和 Big Endian 分別表示儲存資料的順序
  • 資料放進記憶體時:
    • Little Endian: 將資料最高位元組放在最高的記憶體位址
    • Big Endian: 將資料最高位元組放在最低的記憶體位址
  • 小程式判別:
    • 方法一:
typedef union
{
    unsigned int i;
    unsigned char c[4];
}Endian_t;

int main(int argc, char *argv[])
{
    Endian_t et;
    et.i = 0x12345678;
    if(et.c[0]==0x12){
        printf("Big Endian!! \r\n");
    }else if (et.c[0]==0x78){
        printf("Littel Endian!! \r\n");
    }
    return 0; 
}
  • 方法二:
    unsigned int num = 0x12345678; ;
    char *c = (char *)#


    if(*c == 0x12)
    {
        printf("Big endian !! \r\n");
    }else if (*c == 0x78)
    {
        printf("Little endian !! \r\n");
    }else{
        printf("Others .... \r\n");
    }