我正在使用 Arduino,我想将 XBee MAC(高字节和低字节)保存在 uint8_t 数组中。
现在我正在毫无问题地读取字节,但我将它们保存在使用 8 个字节的 uint8_t* 数组中。我想将它们保存在一个 4 字节的数组中。
例如,高字节为:0013A200。不,它使用:{0,0,1,3,A,2,0,0},类似的东西。
我想这样保存它们:{0x00, 0x13, 0xA2, 0x00}
可能吗?我还没找到办法。。
最简单的方法如下:
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。
我会这样做:
uint8_t XbeeMAC[] = {0x00, 0x13, 0xA2, 0x00};