- 最近遇到個 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");
}