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 }
View Code

 

posted @ 2023-02-11 20:07  泥古拉斯赵四  阅读(7)  评论(0编辑  收藏  举报