设计一个代码,可以把int类型数据从小端序转成大端序
1.位移
#include <stdio.h>
//把int类型数据从小端序转成大端序
void main()
{
int n=0x12345678;
char *p=(char *)&n;
printf("小端序:%#x\n",n);
n=(*p)<<24|(*(p+1))<<16|(*(p+2))<<8|(*(p+3));
printf("大端序:%#x\n",n);
}
2.交换
#include <stdio.h>
union endian//共用体(联合体)
{
char a[4];
int b;
}big;
//把int类型数据从小端序转成大端序
int big_endian(int n)
{
char temp;
big.b=n;
//第1字节与第4字节交换
temp=big.a[0];
big.a[0]=big.a[3];
big.a[3]=temp;
//第2字节与第3字节交换
temp=big.a[1];
big.a[1]=big.a[2];
big.a[2]=temp;
return big.b;
}
void main()
{
int n=0x12345678;
printf("小端序:%#x\n",n);
n=big_endian(n);
printf("大端序:%#x\n",n);
}
大小端(字节序)
大小端:用来描述计算机中数据的存储方式 //int a=0x12345678;12->高字节,78->低字节