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

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

  • ヒイラギ
     モクセイ科モクセイ属に分類される常緑小高木の一種

    ナンテン
     メギ科ナンテン属の常緑低木

    ヒイラギナンテン
     メギ科メギ属の常緑低木

    セイヨウヒイラギ
     モチノキ科モチノキ属の常緑小高木

    ヒラギノ
     macOSおよびiOSの標準日本語フォント