Odwróć endianizm struktury C
Mam strukturę w C, która wygląda tak:
typedef u_int8_t NN;
typedef u_int8_t X;
typedef int16_t S;
typedef u_int16_t U;
typedef char C;
typedef struct{
X test;
NN test2[2];
C test3[4];
U test4;
} Test;
Deklarowałem strukturę i zapisane wartości do pól w następujący sposób:
Test t;
int t_buflen = sizeof(t);
memset( &t, 0, t_buflen);
t.test = 0xde;
t.test2[0]=0xad; t.test2[1]=0x00;
t.test3[0]=0xbe; t.test3[1]=0xef; t.test3[2]=0x00; t.test3[3]=0xde;
t.test4=0xdeca;
Wysyłam tę strukturę przez UDP na serwer. Obecnie działa to dobrze, gdy testuję lokalnie, jednak teraz muszę wysłać tę strukturę z mojegolittle-endian
maszyna do abig-endian
maszyna. Nie jestem pewien, jak to zrobić.
Szukałem użyciahtons
ale nie jestem pewien, czy ma to zastosowanie w tej sytuacji, ponieważ wydaje się, że jest to tylko zdefiniowaneunsigned ints
16 lub 32 bity, jeśli dobrze zrozumiałem.