C语言学习:案例:判断字节序
1 #include <io_utils.h> 2 3 int IsBigEndian() { 4 union { 5 char c[2]; 6 short s; 7 } value = {.s=0x100}; 8 9 return value.c[0] == 1; 10 } 11 12 int IsBigEndian2() { 13 short s = 0x100; 14 char *p = (char *)&s; 15 return p[0] == 1; 16 } 17 18 int ToggleEndian(int original) { 19 union { 20 char c[4]; 21 int i; 22 } value = {.i=original}; 23 24 char temp = value.c[0]; 25 value.c[0] = value.c[3]; 26 value.c[3] = temp; 27 temp = value.c[1]; 28 value.c[1] = value.c[2]; 29 value.c[2] = temp; 30 31 return value.i; 32 } 33 34 int ToggleEndian2(int original) { 35 char *p = (char *)&original; 36 char temp = p[0]; 37 p[0] = p[3]; 38 p[3] = temp; 39 temp = p[1]; 40 p[1] = p[2]; 41 p[2] = temp; 42 43 return original; 44 } 45 46 int main() { 47 PRINT_INT(IsBigEndian()); 48 49 int original = 0x12345678; 50 PRINT_HEX(ToggleEndian(original)); 51 return 0; 52 }