Wie verketten von zwei byte-arrays in C?

Ich bin-Kodierung auf der Arduino-Plattform und ich bin versucht, zu schreiben, etwas, das verketten/append byte-arrays in C.

byte a[] = {a1, ..., an};
byte b[] = {b1, ..., bm};

byte c[] = a + b; //equivalent to {a1, ..., an, b1, ..., bm}

Was ist der beste Weg, um das obige Ergebnis?

Ich habe versucht, online-Suche, aber ich habe nicht hatte vieles Glück. Ich sah eine andere Antwort auf SO Hervorhebung der Schritte, die benötigt werden, um dies zu tun, jedoch konnte ich nicht Folgen. Sie sagen auch, dass es gibt Bibliotheken, die sich mit dieser Art der Sache, aber da bin ich auf Arduino bin ich unsicher, ob oder nicht diese sind völlig verfügbar für mich.

Ich verstehen, muss es irgendeine Art von Speicher-manipulation, um für diese zu arbeiten, aber ich bin neu auf diese Art von low-level-Manipulationen, so dass Sie nicht zu viel Sinn für mich. Ich habe Erfahrung in höheren Programmiersprachen (C#, Java und etwas C++).


Sollte ich auch hinzufügen: es Kann die gleiche Technik für sich arbeiten:

byte a[] = {a1, ..., an};
byte b[] = {b1, ..., bm};

a = a + b
  • Sind die Größen fest?
  • vorausgesetzt byte ist ein char Größe entspricht, byte c[sizeof(a) + sizeof(b]; und zwei memcpy ruft es tun würde, wenn das wirklich so ist, wie a und b deklariert werden.
  • Ja. a und b deklariert sind, wie diese. Allerdings habe ich editiert, die Frage zu enthalten, der Fall, wenn b angehängt zu einem als gut.
  • das wird nicht passieren, es sei denn a ist zunächst sortiert, um die Daten aufzunehmen, und Raum für die angehängten Daten Und eine memcpy-Typ-operation, ist immer noch beteiligt, früher oder später. Unabhängig davon, sind die syntax, die Sie verwenden ist definitiv nicht deckungsgleich mit der C-Sprache.
  • Ja. Ich bin mir bewusst, dass es definitiv nicht C. ich habe es geschrieben in einem pseudo-Stil besser zu erklären, meine Probleme.
  • bei komplexeren Fällen, z.B. wo Sie die Größe zur Laufzeit erfordern würde malloc() für den ersten Fall, und realloc() im zweiten Fall, aber alle von Ihnen verwenden würde memcpy() um die Daten zu kopieren.

InformationsquelleAutor Ali Caglayan | 2015-02-21
Schreibe einen Kommentar