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