Arduino объединяет несколько массивов (c ++) - PullRequest
0 голосов
/ 09 октября 2018

Я хочу знать, как я могу объединить несколько байтовых массивов в 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 голосов
/ 09 октября 2018

Может быть что-то вроде этого:

  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 может быть получен по-разному, например, путем динамического выделения памяти.Это оставлено в качестве упражнения для читателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...