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 回答