c语言:24、大小端序
1、字节序(什么大端序小端序)
大端序:更多用于网络传输(跟网络传输协议规定有关)
小端序:cpu的数据处理
2、C语言判断当前环境字节序
//判断当前字节序,返回0表示小端序,返回1表示大端序
int IsBigEndian(){
union {
char c[2];
short s;
} value = {.s=0x0100};
return value.c[0] == 1;
}
//判断当前字节序(指针版本)
int IsBigEndian2(){
short s = 0x100;
char *p = (char *)&s;
return p[0] == 1;
}
运行结果
3、C语言整型端序切换
//字节序切换
int ToggleEndian(int original){
union {
char c[4];
int i;
} value = {.i=original};
char temp = value.c[0];
value.c[0] = value.c[3];
value.c[3] = temp;
temp = value.c[1];
value.c[1] = value.c[2];
value.c[2] = temp;
return value.i;
}
//字节序调换(指针版本)
int ToggleEndian2(int original){
char *p = (char *)&original;
char temp = p[0];
p[0] = p[3];
p[3] = temp;
temp = p[1];
p[1] = p[2];
p[2] = temp;
return original;
}
int original = 0X12345678;
printf("%x, %X", ToggleEndian(original) );
运行结果