Behandeln von Puffern in Node.js

JavaScript ist eine Sprache, die Zeichenfolgen gut verarbeitet. Da sie jedoch ursprünglich für die Verarbeitung von HTML-Dokumenten entwickelt wurde, eignet sie sich nicht besonders für die Verarbeitung von Binärdaten. Tatsächlich verfügt JavaScript nicht über einen Binärdatentyp. Es enthält nur Zahlen oder strukturierte Typen.

Wie wir wissen, basiert Node.js auf JavaScript und kann Textprotokolle wie HTTP verarbeiten, mit denen Sie auch die Kommunikation mit Datenbanken herstellen, Bilder manipulieren und sogar Dateimanipulationen durchführen können Dies nur mit Strings zu tun, kann ziemlich kompliziert sein.

Um diese binären Manipulationsaufgaben zu vereinfachen, enthält Node.js eine Implementierung für Binärpuffer, mit der wir die Bytes eines erstellten Puffers ohne großen Aufwand abrufen und festlegen können.

Anforderungen
Um die in diesem Tutorial vorgeschlagenen Übungen ausführen zu können, muss Node.js funktionsfähig in unserem System installiert sein. Wir können uns dieses Tutorial ansehen, bevor wir es weiter vertiefen. Es ist auch wichtig, auf einen Rich-Text-Editor zugreifen zu können, um die Beispiele zu codieren. Wir können jeden verwenden, mit dem wir uns wohl fühlen. Für die Benutzerfreundlichkeit empfehlen wir jedoch Sublime Text oder NotePad ++, das auch Add-Ons für enthält die JavaScript- und HTML- Syntax.

Erstellung des Puffers

Zum Erstellen eines Puffers müssen Sie lediglich eine neue Instanz der Klasse Buffer () erstellen. Sehen wir uns an, wie wir einen einfachen Puffer basierend auf einer UTF-8-Codierung auf folgende Weise erstellen:

 var buf = neuer Puffer ('Hallo Welt!'); console.log (buf); 

Wir werden unser Beispiel über die Konsole ausführen, um die Antwort von Node.js bezüglich der Erstellung unseres Puffers zu sehen:

buffer-nodejs.jpg

Wenn wir sehen, ob wir unsere Buf- Variable drucken, ist die Antwort möglicherweise nicht die erwartete, aber wir müssen uns daran erinnern, dass wir eine Buffer- Instanz erstellen und diese Klasse ihren Inhalt gemäß einer bestimmten Zeichencodierung codiert.

Wir können auch einen Puffer mit Zeichenfolgen mit anderen Codierungen erstellen, der gültig ist, solange wir dasselbe wie das zweite Argument angeben.

 var buf2 = neuer Puffer ('9b38kte610la', 'base64'); console.log (buf2); 

Wie wir sehen können, können wir die Codierung ohne Probleme angeben. Dann wollen wir sehen, welche Codierungstypen akzeptiert werden und welche Bezeichner sie haben:

ASCII
Dies ist die Standardkodierungsart und wird durch die Kodierung von gleichnamigen Zeichen begrenzt.

utf8 – UTF-8
Dies ist eine Variable mit der Codierung, die durch jedes vorhandene Unicode-Zeichen dargestellt werden kann. Dies ist die Standardcodierung unseres Puffers, wenn keine angegeben wird.

base64 – Base64
Dies ist eine Art Codierung, die zur Darstellung von Binärdaten in einem ASCII- Zeichenfolgenformat verwendet wird. Sie wird hauptsächlich zum Einbetten von Binärdaten in Textdokumente verwendet, um sicherzustellen, dass die Daten beim Datentransport intakt bleiben.

Wenn wir den anfänglichen Inhalt für unseren Puffer nicht haben und einen erstellen müssen, können wir dies auch tun, indem wir die Kapazität des Puffers angeben. Dazu gehen wir wie folgt vor:

 var buf = neuer Puffer (1024); 

Damit erstellen wir einen Puffer von 1024 Bytes für unsere zukünftigen Operationen.

See also  Reparieren Sie den Papierkorb Windows 10

Bytebehandlung im Puffer

Nachdem wir den Puffer erstellt oder empfangen haben, möchten wir ihn möglicherweise überprüfen und seinen Inhalt ändern. Um zuerst auf die darin enthaltenen Bytes zuzugreifen, können wir die Klammern folgendermaßen verwenden:

 var buf = neuer Puffer ('hier ist der Inhalt meines Puffers'); console.log (buf [10]); 

Wenn wir unser Beispiel ausführen, erhalten wir die zehnte Position des Puffers. Wir können sogar zur neunten Position des Puffers wechseln und das Ergebnis sehen. Lassen Sie uns sehen, wie es aussieht:

buffer-nodejs-2.jpg

Wie wir sehen, erhalten wir zufällige Bytes für die Positionen unseres Puffers. Selbst wenn wir den Inhalt einer beliebigen Position darin manipulieren müssen, können wir Folgendes tun:

 var buf = neuer Puffer ('hier ist der Inhalt meines neuen Puffers'); buf [2] = 110; buf [6] = 180; buf [10] = 90; console.log (buf [2]); console.log (buf [6]); console.log (buf [10]); 

Sehen wir uns die Konsolenantwort unseres Beispiels an:

buffer-nodejs-3.jpg

Wie wir gesehen haben, konnten wir den Inhalt bestimmter Positionen in unserem Puffer ohne große Probleme ändern. Außerdem können wir die Größe unseres Puffers mit der Eigenschaft length folgendermaßen ermitteln:

 var buf = neuer Puffer (100); console.log (buf.length); 

Wenn wir Beobachter sind, können wir sehen, dass die Antwort unserer Konsole 100 ist. Nachdem wir diesen Wert erhalten haben, können wir ihn verwenden, um unseren Puffer zu durchlaufen und so jede Position zu manipulieren, um den Wert zu erhalten oder einen bestimmten Wert festzulegen. Sehen wir uns ein einfaches Beispiel dafür an:

 var buf = neuer Puffer (100); für (var i = 0; i <buf.length; i ++) { buf [i] = i; } console.log (buf); 

In diesem Beispiel haben wir einen neuen Puffer mit einer Kapazität von 100 Byte erstellt und dann jedes Byte mit einem Wert von 0 bis 99 festgelegt. Lassen Sie uns schließlich die Antwort der Konsole sehen, wenn wir unser Beispiel ausführen:

See also  Facebook-Angebote - Marketing- und Werbestrategie

buffer-nodejs-4.jpg

Daten aus dem Puffer extrahieren

Ein weiteres interessantes Merkmal des Puffers besteht darin, einen Teil davon extrahieren zu können, sobald er erstellt oder empfangen wurde. Wir können es “hacken”, um es auf irgendeine Weise auszudrücken, und einen weiteren kleineren Puffer mit dem Teil erstellen, den wir gehackt haben, ohne zu vergessen, woher und von wo wir es stechen werden. Schauen wir uns ein Beispiel an, um zu veranschaulichen, was wir erklärt haben:

 var buffer_completo = new Buffer ("das ist der Inhalt meines Puffers, den wir hacken werden"); var buffer_small = buffer_completo.slice (26, 55); console.log (buffer_small.toString ()); 

Wie wir zuerst sehen, erstellen wir die Instanz unseres Puffers mit dem anfänglichen Inhalt, dann mit der slice () -Funktion, die wir angeben, von und zu wo wir den Inhalt erhalten, ordnen wir das, was wir erhalten, einer neuen Variablen zu und dekodieren schließlich den Inhalt, um den Inhalt visualisieren zu können Inhalt unseres zweiten Puffers, sehen wir uns die Antwort von der Konsole an, wenn wir das Beispiel ausführen:

buffer-nodejs-5.jpg

Es ist wichtig zu erwähnen, dass, wenn wir einen neuen Puffer schneiden, wir keinen neuen Speicher des Systems verwenden, dieser neue Puffer den Speicher des Vaters verwendet, da nur auf ihn Bezug genommen wird, sondern mit einem anderen Anfang und Ende. Dies kann einige Probleme verursachen, wenn wir nicht vorsichtig sind, da wir am gleichen Puffer arbeiten. Daher empfehlen wir, mit der Kopiermethode zu arbeiten, um Probleme zu vermeiden, die wir unten sehen werden.

Einen Puffer kopieren

Wie bereits erwähnt, kann es beim Ausschneiden eines Puffers zu Problemen kommen, aber wir sind vorsichtig, aber dafür haben wir die Kopiermethode , mit der wir den Inhalt eines Puffers unter Verwendung einer neuen Instanz und eines neuen Speicherplatzes in einen neuen Puffer kopieren können :

 var buffer1 = new Buffer ("Inhaltspuffer Nummer 1, zu kopierender Inhalt"); var buffer2 = neuer Puffer (20); var objHome = 0; var sourceHome = 26; var sourceFin = 50; buffer1.copy (buffer2, objHome, sourceHome, fontFin); console.log (buffer2.toString ()); 

Wie wir sehen, erstellen wir zwei verschiedene Puffer, wobei der erste den Inhalt und der zweite nur die Größe haben wird. Wir geben den Anfang für unseren zweiten Puffer an und ebenso geben wir den Anfang und das Ende für den neuen Puffer an, den wir kopieren werden. Lassen Sie uns die Antwort von sehen die Konsole beim Ausführen des Beispiels:

See also  Das ist es, was Ihre Batterien tötet

buffer-nodejs-6.jpg

Puffer entschlüsseln

Wie wir in den vorherigen Beispielen gesehen haben, konnten wir den ursprünglichen Inhalt unseres Puffers mit der toString () -Methode drucken. Dies wird als Dekodierung des Puffers bezeichnet. Wenn wir nichts angeben, entspricht dies der Instanz der Buffer- Klasse (). defekt wir haben es auf UTF-8 dekodiert.

Wir können sogar eine UTF-8- Zeichenfolge in base64 umcodieren, um einen Fall zu erwähnen.

 var cadenautf8 = 'meine neue Zeichenkette'; var buf = neuer Puffer (stringutf8); var cadenabase64 = buf.toString ('base64') console.log (base64 string); 

Schauen wir uns zum Schluss an, wie wir unsere ursprüngliche Zeichenfolge transkodiert haben:

buffer-nodejs-7.jpg

Damit schließen wir dieses Tutorial ab, in dem wir dank der Buffer- Klasse den Umgang mit Binärdaten in Node.js gelernt haben, mit denen wir sie durch Lesen, Schreiben bearbeiten, kleine Teile davon abrufen, in neue Instanzen kopieren und bearbeiten können Verwandeln Sie diesen Puffer sogar in neue Codierungstypen für die Manipulation in unseren Programmen.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *