私は次のようなCの構造を持っています:
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;
次のように、構造体を宣言し、値をフィールドに書き込みました。
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;
この構造をUDP経由でサーバーに送信しています。現時点では、ローカルでテストすると問題なく動作しますが、この構造を自分のlittle-endian
マシンからマシンに送信する必要がありますbig-endian
。これを行う方法がよくわかりません。
使用を検討しましたが、正しく理解していれば、16ビットまたは32ビットhtons
に対してのみ定義されているように見えるため、この状況に適用できるかどうかはわかりません。unsigned ints