0

私は Arduino を使用しており、XBee MAC (上位バイトと下位バイト) を uint8_t 配列に保存したいと考えています。

現在、問題なくバイトを読み取っていますが、8 バイトを使用して uint8_t* 配列に保存しています。それらを4バイト配列に保存したい。

たとえば、上位バイトは 0013A200 です。いいえ、{0,0,1,3,A,2,0,0} などを使用しています。

この方法で保存したい: {0x00, 0x13, 0xA2, 0x00}

出来ますか?私はそれを行う方法を見つけていません..

4

2 に答える 2

0

最も簡単な方法は次のとおりです。

union {
  uint32_t dword;
  struct
  {
     uint8_t b0 : 4;
     uint8_t b1 : 4;
     uint8_t b2 : 4;
     uint8_t b3 : 4;
     uint8_t b4 : 4;
     uint8_t b5 : 4;
     uint8_t b6 : 4;
     uint8_t b7 : 4;
  } b;
//  uint8_t nibble[] : 4; // can't make an array!
} XbeeMAC;

..。

XbeeMAC.b.b0 = 0;
XbeeMAC.b.b1 = 1;
XbeeMAC.b.b2 = 2;
XbeeMAC.b.b3 = 3;
XbeeMAC.b.b4 = 4;
XbeeMAC.b.b5 = 5;
XbeeMAC.b.b6 = 6;
XbeeMAC.b.b7 = 7;
Serial.print(F(" XbeeMAC.dword=")); 
Serial.println(XbeeMAC.dword,HEX);

出力

 XbeeMAC.dword=76543210

ニブルの配列を作成できない場合、それらは個別のuint8_tとして入力され、格納されます。

于 2013-02-25T19:37:20.650 に答える
0

私はこれを行うだけです:

uint8_t XbeeMAC[] = {0x00, 0x13, 0xA2, 0x00};
于 2013-02-26T11:01:57.170 に答える