Heim >Web-Frontend >js-Tutorial >Was ist Buffer in NodeJS und detaillierte Erläuterung der Anwendungsbeispiele
Der sogenannte Pufferpuffer bedeutet „temporärer Speicherbereich“, ein Speicherabschnitt, in dem Eingabe- und Ausgabedaten vorübergehend gespeichert werden.
Die JS-Sprache selbst hat nur einen String-Datentyp und keinen Binärdatentyp, daher stellt NodeJS einen globalen Konstruktorpuffer bereit, der String entspricht, um Operationen für Binärdaten bereitzustellen. Zusätzlich zum Lesen der Datei, um eine Instanz von Buffer zu erhalten, kann sie beispielsweise auch direkt erstellt werden:
var buffer = new Buffer([ 0x68, 0x65, 0x6c, 0x6c, 0x6f ]) ;
Buffer ähnelt einer Zeichenfolge Zusätzlich zur Verwendung des .length-Attributs zum Abrufen Bytelänge können Sie auch die Methode [index] verwenden, um die Bytes an der angegebenen Position zu lesen, zum Beispiel:
buffer[0] ; // 0x68;
Puffer und Zeichenfolge können ineinander konvertiert werden, Sie können beispielsweise die angegebene verwenden Kodierung zum Konvertieren von Binärdaten in eine Zeichenfolge:
var str = buffer.toString("utf-8"); // hello
Konvertieren Sie die Zeichenfolge in Binärdaten unter der angegebenen Kodierung:
var buffer= new Buffer("hello", "utf-8") ; // <Buffer 68 65 6c 6c 6f>
Ein kleiner Unterschied:
Puffer hat ein wichtiger Unterschied zur Saite. Die Zeichenfolge ist schreibgeschützt und jede Änderung an der Zeichenfolge führt zu einer neuen Zeichenfolge, während die ursprüngliche Zeichenfolge unverändert bleibt.
Puffer ähnelt eher einem C-Spracharray, das Zeigeroperationen ausführen kann. Sie können beispielsweise die Methode [index] verwenden, um die Bytes an einer bestimmten Position direkt zu ändern. Die
slice-Methode gibt keinen neuen Puffer zurück, sondern einen Zeiger auf eine Position in der Mitte des ursprünglichen Puffers, wie unten gezeigt.
[ 0x68, 0x65, 0x6c, 0x6c, 0x6f ]
^ ^
|. Wirkt sich auf den ursprünglichen Puffer aus, zum Beispiel:
var buffer= new Buffer([ 0x68, 0x65, 0x6c, 0x6c, 0x6f ]) ; var sub = bin.slice(2) ; sub[0] = 0x65 ; console.log(buffer) ; // <Buffer 68 65 65 6c 6f>
Dies ähnelt der Beantragung eines neuen Speichers und dem Kopieren der Daten in den vorhandenen Speicher. Unten finden Sie ein Beispiel.
Kurz gesagt: Buffer erweitert die Datenverarbeitungsfähigkeiten von JS von Strings auf beliebige Binärdaten.var buffer= new Buffer([ 0x68, 0x65, 0x6c, 0x6c, 0x6f ]) ; var dup = new Buffer(bin.length) ; buffer.copy(dup) ; dup[0] = 0x48 ; console.log(buffer) ; // <Buffer 68 65 6c 6c 6f> console.log(dup) ; // <Buffer 48 65 65 6c 6f>Zusammenfassend
(1): JavaScript eignet sich für die Verarbeitung von Unicode-codierten Daten, ist jedoch nicht für die Verarbeitung von Binärdaten geeignet.
(3) Node verfügt über mehrere Methoden zum Verarbeiten, Erstellen und Konsumieren von Oktettströmen.
(4), die Originaldaten werden in einer Buffer-Instanz gespeichert. Ein Buffer ähnelt einem Integer-Array, sein Speicher wird jedoch außerhalb des V8-Stacks zugewiesen. Die Größe eines Puffers kann nicht geändert werden.
(5), die verarbeiteten Codierungstypen sind: ASCII, UTF8, UTF16LE, UCS2 (Alias von UTF16LE), Base64, Binär, Hex.
(6), Buffer ist ein globales Element und Sie können eine Buffer-Instanz direkt mit new Buffer() abrufen.
Das obige ist der detaillierte Inhalt vonWas ist Buffer in NodeJS und detaillierte Erläuterung der Anwendungsbeispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!