Skip to content

Commit 1e54ac7

Browse files
committed
1.5.15: terrible endian
1 parent 341e556 commit 1e54ac7

File tree

1 file changed

+18
-24
lines changed

1 file changed

+18
-24
lines changed

src/endianness.c

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
#include <stdint.h>
22
int endian_test()
33
{
4-
uint32_t sample = {0x01020304};
4+
int out[3] = {0, -1, 1}; // {terrible, little, big} endian
5+
uint32_t sample = {0x02000001};
56
uint8_t *test = (uint8_t *)&sample;
6-
if (test[0] == 4)
7-
return -1;
8-
else if (test[0] == 1)
9-
return 1;
10-
else
11-
return 0;
7+
return out[test[0]];
128
}
139

1410
uint16_t oi16(uint16_t i)
@@ -20,10 +16,12 @@ uint16_t oi16(uint16_t i)
2016
return (i << 8 | i >> 8);
2117
else
2218
{
23-
uint8_t *val = (uint8_t *)&i;
19+
uint16_t sample = {0x0100};
2420
uint8_t out[2];
25-
out[0] = val[0];
26-
out[1] = val[1];
21+
uint8_t *ind = (uint8_t *)&sample;
22+
uint8_t *val = (uint8_t *)&i;
23+
for (int j = 0; j < 2; j++)
24+
out[ind[j]] = val[j];
2725
return *(uint16_t*)out;
2826
}
2927
}
@@ -39,12 +37,12 @@ uint32_t oi32(uint32_t i)
3937
| i >> 24);
4038
else
4139
{
42-
uint8_t *val = (uint8_t *)&i;
40+
uint32_t sample = {0x03020100};
4341
uint8_t out[4];
44-
out[0] = val[0];
45-
out[1] = val[1];
46-
out[2] = val[2];
47-
out[3] = val[3];
42+
uint8_t *ind = (uint8_t *)&sample;
43+
uint8_t *val = (uint8_t *)&i;
44+
for (int j = 0; j < 4; j++)
45+
out[ind[j]] = val[j];
4846
return *(uint32_t*)out;
4947
}
5048
}
@@ -64,16 +62,12 @@ uint64_t oi64(uint64_t i)
6462
| i >> 56);
6563
else
6664
{
67-
uint8_t *val = (uint8_t *)&i;
65+
uint64_t sample = {0x0706050403020100};
6866
uint8_t out[8];
69-
out[0] = val[0];
70-
out[1] = val[1];
71-
out[2] = val[2];
72-
out[3] = val[3];
73-
out[4] = val[4];
74-
out[5] = val[5];
75-
out[6] = val[6];
76-
out[7] = val[7];
67+
uint8_t *ind = (uint8_t *)&sample;
68+
uint8_t *val = (uint8_t *)&i;
69+
for (int j = 0; j < 8; j++)
70+
out[ind[j]] = val[j];
7771
return *(uint64_t*)out;
7872
}
7973
}

0 commit comments

Comments
 (0)