配列と構造体を共用体にしてエンディアンが逆さにならないようにするには?

こんばんは、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)

Parents
  • HEWを使っていますが、「ビルド」「RX Toolchain」「CPU」「エンディアン」が有ります。
     ここを操作すれば実現出来そうです。

    >あぁ情けない!(T_T)

     しょうが無いなぁ。今日は僕の誕生日だから、許してやるよ。(笑)
Reply
  • HEWを使っていますが、「ビルド」「RX Toolchain」「CPU」「エンディアン」が有ります。
     ここを操作すれば実現出来そうです。

    >あぁ情けない!(T_T)

     しょうが無いなぁ。今日は僕の誕生日だから、許してやるよ。(笑)
Children
No Data