请简述字节序的概念(概念、大小端),用共用体的方式求本机的大小端
字节序(Byte Order)指的是在数字在内存中表示时,字节的排列顺序。
目前常用的字节序有大端字节序(Big-Endian)和小端字节序(Little-Endian)两种。
在大端字节序中,最高位字节,也就是第一个字节存放在最低的内存地址处,对于整数0x12345678,它在大端字节序中的表示形式是0x12 0x34 0x56 0x78。
在小端字节序中,最低位字节,存放在最低的内存地址处,对于整数0x12345678,在小端字节序中的表示形式是0x78 0x56 0x34 0x12。
共用体:
#include <stdio.h>
union endian{
int i;
char c;
};
// 判断当前计算机的字节序
int check_endian(void)
{
union endian num;
num.i = 0x87654321;
if(num.c == 0x21)
{
printf("This computer is Little-Endian\n");
return 0;
}
else if(num.c == 0x87)
{
printf("This computer is Big-Endian\n");
return 1;
}
}
int main(int argc, char const *argv[])
{
check_endian();
return 0;
}