Arduino结合了多个数组(C ++)

时间:2018-10-09 12:58:53

标签: c++ arrays arduino

我想知道如何将多个字节数组合并为1?

我有这个:

 byte MessageStart [] = {0x02};
 byte Next [] = {0x5C , 0x73}; 
 byte messgae[] = {0x30 , 0x35};
 byte BeforeEnd [] = {0x5C , 0x3B};
 byte MessageEnd [] = {0x03};

我希望所有这些都具有一个字节数组,最终结果需要为:

byte Final [] = {0x02, 0x5C, 0x73, 0x30, 0x35, 0x5C, 0x3B, 0x03}

我该怎么做?

1 个答案:

答案 0 :(得分:0)

也许是这样的:

  byte *concatbytes(const byte *source, byte *destination, int length)
  {
    for (int i = 0; i < length; i++)
    {
      *destination++ = *source++;
    }

    return destination;
  }

  ...

  byte MessageStart[] = { 0x02 };
  byte Next[] = { 0x5C , 0x73 };
  byte messgae[] = { 0x30 , 0x35 };
  byte BeforeEnd[] = { 0x5C , 0x3B };
  byte MessageEnd[] = { 0x03 };

  byte Final[8];       // 8 is the hardcoded length of sum of all 5 arrays

  byte *dest = Final;    
  dest = concatbytes(dest, MessageStart, sizeof(MessageStart));
  dest = concatbytes(dest, Next, sizeof(Next));
  dest = concatbytes(dest, messgae, sizeof(messgae));
  dest = concatbytes(dest, BeforeEnd, sizeof(BeforeEnd));
  dest = concatbytes(dest, MessageEnd, sizeof(Next));

Final数组可以通过动态内存分配等不同方式获得。留给读者练习。