判断大小端
bool lslittle()
{
typedef union B
{
short a;
char b;
}B;
B a;
a.a = 1;//short a在内存中存放是 01 00
return a.b == 1;//当char b的值和01相等时就是小端,返回true
}
int main()
{
if (lslittle())
{
printf("小端");
}
else
{
printf("大端");
}
return 0;
}
小端转大端,大端转小端
int LittleToBig(int n)
{
typedef union A
{
char a[4];
int b;
}A;
A ua;
ua.b = n;
int j = sizeof(int) - 1;
for (int i = 0; i < j; i++, j--)
{
char tmp = ua.a[i];
ua.a[i] = ua.a[j];
ua.a[j] = tmp;
}
return ua.b;
}
int main()
{
printf("%x", LittleToBig(0x12345678));
return 0;
}