こんばんは、NAKAといいます。
初心者あるあるで申し訳ないんですが、C言語を教えてください。
8バイト(DATA[0]~DATA[7])の送受信データをやり取りしてます。
配列データのDATA[0]=0x12,DATA[1]=0x34 から変数SPEED=0x1234というデータを作りたく、両者を共用したいので
struct{ union { struct { unsigned short SPEED; unsigned short RPM; unsigned short NE; unsigned char SIG1; unsigned char SIG2; }SIG; unsigned char DATA[8]; }BYTE; }TXRX;
配列と構造体を共用体として宣言しました。
配列に
TXRX.BYTE.DATA[0] = 0x12; TXRX.BYTE.DATA[1] = 0x34; TXRX.BYTE.DATA[2] = 0x56; TXRX.BYTE.DATA[3] = 0x78; TXRX.BYTE.DATA[4] = 0x9A; TXRX.BYTE.DATA[5] = 0xBB; TXRX.BYTE.DATA[6] = 0xCC; TXRX.BYTE.DATA[7] = 0xDD;
ようにデータをいれたのですが、エンディアンが逆なので
のようにSPEED=0x1234 となってほしいのですが SPEED=0x3412となってしまいます。
当然
TXRX.BYTE.SIG.SPEED = 0x1234;
とするとDATA[0]に0x34、DATA[1]に0x12が入っちゃいます。
SPEED=0x1234と入るように作るにはどうすれば良いのでしょうか?
あぁ情けない!(T_T)