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 }