So hängen Sie Binärdaten an einen Puffer in node.js an

Ich habe einen Puffer mit einigen Binärdaten:

<code>var b = new Buffer ([0x00, 0x01, 0x02]);
</code>

und ich möchte anhängen0x03.

Wie kann ich mehr Binärdaten anhängen? Ich suche in der Dokumentation, aber beim Anhängen von Daten muss es sich um eine Zeichenfolge handeln. Andernfalls tritt ein Fehler auf (TypeError: Argument muss ein String sein):

<code>var b = new Buffer (256);
b.write ("hola");
console.log (b.toString ("utf8", 0, 4)); //hola
b.write (", adios", 4);
console.log (b.toString ("utf8", 0, 11)); //hola, adios
</code>

Die einzige Lösung, die ich hier sehen kann, besteht darin, für alle angehängten Binärdaten einen neuen Puffer zu erstellen und ihn mit dem richtigen Versatz in den Hauptpuffer zu kopieren:

<code>var b = new Buffer (4); //4 for having a nice printed buffer, but the size will be 16KB
new Buffer ([0x00, 0x01, 0x02]).copy (b);
console.log (b); //<Buffer 00 01 02 00>
new Buffer ([0x03]).copy (b, 3);
console.log (b); //<Buffer 00 01 02 03>
</code>

Dies scheint jedoch ein wenig ineffizient zu sein, da ich für jedes Anhängen einen neuen Puffer erstellen muss.

Kennen Sie eine bessere Methode zum Anhängen von Binärdaten?

BEARBEITEN

Ich habe ein geschriebenBufferedWriter das schreibt Bytes in eine Datei mit internen Puffern. Gleich wieBufferedReader aber zum schreiben.

Ein kurzes Beispiel:

<code>//The BufferedWriter truncates the file because append == false
new BufferedWriter ("file")
    .on ("error", function (error){
        console.log (error);
    })

    //From the beginning of the file:
    .write ([0x00, 0x01, 0x02], 0, 3) //Writes 0x00, 0x01, 0x02
    .write (new Buffer ([0x03, 0x04]), 1, 1) //Writes 0x04
    .write (0x05) //Writes 0x05
    .close (); //Closes the writer. A flush is implicitly done.

//The BufferedWriter appends content to the end of the file because append == true
new BufferedWriter ("file", true)
    .on ("error", function (error){
        console.log (error);
    })

    //From the end of the file:
    .write (0xFF) //Writes 0xFF
    .close (); //Closes the writer. A flush is implicitly done.

//The file contains: 0x00, 0x01, 0x02, 0x04, 0x05, 0xFF
</code>

LETZTES UPDATE

Benutzenconcat.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage