C语言中使用union是怎么判断处理器大小端的
union Charge
{
char arr[2];
short num;
};
int main()
{
union Charge charge;
charge.arr[0] = 1;
charge.arr[1] = 2;
if (charge.num == 0x0201)
{
printf(“小端\n”);
}
else
{
printf(“大端\n”);
}
return 0;
}
C语言判断处理器大小端对齐原理
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中
上面c是一个共用体,给共用体中的a赋值为1.然后读取b是否为1,当b为1是说明是小端模式,b为0则说明是大端模式。
注意共用体是一个int和一个char,所以才能判断。
C语言测试大小端的问题
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
测试程序:
#includestdio.h
int main(void)
{
int a = 0x12345678;
unsigned char *p=(unsigned char *)a;
if(0x78 == *p)
{
printf(“little end\n”);
}
else
{
printf(“big end\n”);
}
return 0;
}