大小端判别三种方法
程序员文章站
2022-05-23 09:19:40
...
1.联合体
#include <stdio.h>
/****tonytrek*****2021.5.7*****/
/*****大小端判断 联合法*****/
int main()
{
union test
{
int x;
short y;
};
union test a;
a.x=0x00001111;
if(a.y==0x1111)
{
printf("little endian");
}
else
printf("big endian");
return 0;
}
2.指针
#include <stdio.h>
/****tonytrek*****2021.5.7*****/
/*****大小端判断 指针法*****/
int main()
{
int a=1;
unsigned char* ap=(unsigned char*)&a;
if(*ap)
{
printf("little endian");
}
else
printf("big endian");
return 0;
}
指针强制类型转换后指向数据的低地址位。因此,如果是小端字节序,强制转换后指针指向地址上的值为1。相反,如果是大端字节序,指针指向地址上则为0。
3.直接强制类型转换
#include <stdio.h>
/****tonytrek*****2021.5.7*****/
/*****大小端判断 强制类型转换法*****/
int main()
{
int a=0x00001111;
short b=(short)a;
if(b==0x1111)
{
printf("little endian");
}
else
printf("big endian");
return 0;
}
上一篇: c语言 选择排序