Kehre die Endianness einer C-Struktur um

Ich habe eine Struktur in C, die so aussieht:

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;

Ich habe die Struktur und die geschriebenen Werte in den Feldern wie folgt deklariert:

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; 

Ich sende diese Struktur über UDP an einen Server. Gegenwärtig funktioniert dies gut, wenn ich vor Ort teste, aber jetzt muss ich diese Struktur von meinem sendenlittle-endian Maschine zu einembig-endian Maschine. Ich bin mir nicht sicher, wie ich das machen soll.

Ich habe nachgeforschthtons Ich bin mir aber nicht sicher, ob dies in dieser Situation zutrifft, da es nur für diese definiert zu sein scheintunsigned ints von 16 oder 32 Bit, wenn ich richtig verstanden habe.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage