1 union 版本
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 main() {
PRINT_INT(isBigEndian());
int ogriginal =0x12345678;
PRINT_HEX(ToggleEndian(ogriginal));
return 0;
}
2 指针版本
int toggleEndianPtr(int original) {
char *p = (char *) &original;
char temp = p[0];
p[0] = p[3];
p[3] = temp;
p[1] = p[2];
p[2] = temp;
return original;
}
int main() {
PRINT_INT(isBigEndian());
int original = 0x12345678;
PRINT_HEX(toggleEndian(original));
PRINT_HEX(toggleEndianPtr(original));
return 0;
}