字节序、使用共用体判断系统的大小端
字节序的概念:
- 字节序是指系统存储多字节整形(short, int, long, long long)的顺序,不包括字符(因为是单字节)、字符串(其实是数组,下标顺序就是存储顺序)、浮点(float, double)类型
- 大端存储(big endian)是指多字节整形的高字节存储在低地址中
- 小端存储(little endian)是指多字节整形的低字节存储在低地址中
- 计算机从低地址开始读取,到读满 该类型的字节数 停止,再将读取到的多个字节按照大/小端转换出结果。
使用共用体判断系统的大小端
#include<stdio.h>
union test{
int i;
char c;
};
int endian(void)
{
union test var;
var.i = 0x87654321;
if(0x21 == var.c)
{
printf("little endian\n");
return 0;
}
else if(0x87 == var.c)
{
printf("big endian\n");
return 1;
}
else
{
return -1;
}
}
int main(int argc, char const *argv[])
{
endian();
return 0;
}