Byte-Array in JavaScript speichern
-
das
ArrayBuffer
-Objekt in JavaScript - die typisierten Array-Ansichten
-
Manipulieren von
ArrayBuffer
mit typisierten Array-Ansichten in JavaScript
In diesem Artikel wird erläutert, wie Byte-Arrays in JavaScript gespeichert werden.
das ArrayBuffer
-Objekt in JavaScript
Ein Array von Bytes oder ein Byte-Array ist in JavaScript als das ArrayBuffer
-Objekt bekannt. Der ArrayBuffer
wird nicht von JavaScript-Arrays abgeleitet und hat eine feste Länge im Speicher, die nicht geändert werden kann.
Außerdem können Sie nicht direkt auf Elemente im ArrayBuffer
-Objekt zugreifen, wie wir es in üblichen JavaScript-Arrays tun. Es benötigt ein separates Ansichtsobjekt zum Lesen/Schreiben.
Syntax:
new ArrayBuffer(length_in_bytes);
Der obige Code ruft den ArrayBuffer
-Konstruktor auf, um eine neue ArrayBuffer
-Instanz mit der angegebenen Bytelänge zu erstellen.
Lassen Sie uns einen ArrayBuuffer
mit einer Länge von 8 Bytes erstellen.
let myTypedArrayBuffer = new ArrayBuffer(8);
Idealerweise sollte der obige Code einen neuen ArrayBuffer
mit der Grösse von 8 Bytes erzeugen. Nun überprüfen wir die Eigenschaft byteLength
des erstellten ArrayBuffer
-Objekts myTypedArrayBuffer
.
Code:
console.log(myTypedArrayBuffer.byteLength);
Ausgang:
Die Länge des Puffers beträgt erwartungsgemäß 8 Byte. Es weist 8 Bytes im Speicher zu, wobei jedes Byte Null zugeordnet ist.
Dieser Puffer bietet keinen Mechanismus zum Manipulieren seiner Bytes. Daher müssen wir ein typisiertes Array-View-Objekt verwenden, um in den ArrayBuffer
zu lesen/schreiben.
die typisierten Array-Ansichten
Typisierte Array-Ansichten sind wie verschiedene Linsen, die eine Erklärung des Byte-Arrays liefern, insbesondere des im Speicher gespeicherten ArrayBuffer
. Diese Ansichten unterstützen numerische Typen wie Ganzzahlen mit und ohne Vorzeichen sowie Gleitkommazahlen.
Die folgenden Ansichten wurden implementiert, um das Objekt ArrayBuffer
zu manipulieren.
Typ | Beschreibung |
---|---|
Uint8Array |
Diese Ansicht manipuliert die ArrayBuffer -Bytes so, dass jedes Byte eine separate Ganzzahl ist. Da ein Byte 8 Bits enthält, können 255 vorzeichenlose Ganzzahlen dargestellt werden, und der Ganzzahlbereich reicht von 0 bis 255. |
Uint16Array |
Diese Ansicht dient ArrayBuffer , da alle 2 Bytes im Puffer eine ganze Zahl sind, die von 0 bis 65535 reicht. Alle ganzen Zahlen sind vorzeichenlos. |
Uint32Array |
Alle 4 Bytes im ArrayBuffer werden als Integer betrachtet. Daher kann diese Ansicht mehr als 4 Milliarden unsignierte Nummern speichern. |
Float64Array |
Das Float64Array kann alle 8 Bytes im Puffer als Ganzzahl interpretieren. |
Wie Sie sehen können, ermöglichen Ihnen verschiedene Ansichten, binäre Daten im ArrayBuffer
als unterschiedliche Zahlenformate zu interpretieren.
Manipulieren von ArrayBuffer
mit typisierten Array-Ansichten in JavaScript
Alle oben erwähnten typisierten Array-Ansichten folgen denselben Konstruktormustern, wie im Folgenden gezeigt.
new TypedArray(buffer); // provides and ArrayBuffer type object
new TypedArray(array_object); // provides an array-like object
new TypedArray(number_of_elements); // provides the number of integers to be in
// the typed array
new TypedArray(another_typed_array); // provides and ArrayBuffer type object
new TypedArray();
Es gibt keinen eigentlichen TypedArray()
-Konstruktor in JavaScript. Es wird einer der View-Konstruktoren wie new Uint8Array(), new Float64Array()
sein.
Lassen Sie uns aus dem vorherigen Beispiel eine neue Ansicht Uint8Array
erstellen, um den bereits erstellten ArrayBuffer(myTypedArrayBuffer)
zu manipulieren.
Code:
let unsigned8BitIntView = new Uint8Array(myTypedArrayBuffer);
console.log(unsigned8BitIntView);
Ausgang:
Das typisierte Array-Objekt Uint8Array
wurde erstellt, wobei alle Bytes mit dem Wert 0
gefüllt sind.
Sehen wir uns die Länge und tatsächliche Bytelänge dieses Ansichtsobjekts an. Beide sollten 8
sein.
Code:
console.log(
'Length of the view: ' + unsigned8BitIntView.length +
'.... Byte length of the view: ' + unsigned8BitIntView.byteLength);
Wir haben die Eigenschaften length
und byteLength
in der Ansicht Uint8Array
verwendet, um die beiden obigen Werte zu erhalten.
Ausgang:
Lassen Sie uns einen Wert in den Speicherpuffer schreiben.
unsigned8BitIntView[0] = 200;
Jetzt können wir das Objekt unsigned8BitIntView
untersuchen, indem wir jedes Element iterieren.
Code:
for (let value of unsigned8BitIntView) {
console.log(value);
}
Ausgang:
Der Wert 200
wurde im Byte-Array gespeichert. Versuchen wir, 300
in das Byte-Array zu schreiben.
unsigned8BitIntView[1] = 300;
Wir werden das Byte-Array erneut wie im obigen Beispiel iterieren.
Ausgang:
Laut Ausgabe wurde die Ganzzahl 300
nicht in das Byte-Array geschrieben, da diese Ansicht nur Ganzzahlen im Bereich von 0 bis 255
schreiben kann.
Die 300
wird ignoriert und stattdessen als 44
geschrieben. Nachfolgend wird gezeigt, wie die Ganzzahl 44
generiert wird.
Die Ganzzahl 300
kann wie folgt im Binärformat geschrieben werden.
100101100
Da diese Ansicht 8-Bit-Ganzzahlen ohne Vorzeichen interpretiert, wird das erste Bit weggelassen und die verbleibenden 8 Bits werden berücksichtigt.
00101100
Das obige Binärformat ist Integer 44
. Auf die gleiche Weise können wir alle typisierten Array-Ansichten verwenden, um den zugrunde liegenden ArrayBuffer
oder das Array von Bytes im Speicher zu manipulieren.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.
Verwandter Artikel - JavaScript Array
- Überprüfen Sie, ob das Array einen Wert in JavaScript enthält
- Array mit bestimmter Länge in JavaScript erstellen
- Konvertieren ein Array in einen String in JavaScript
- Erstes Element aus einem Array in JavaScript entfernen
- Objekte aus einem Array in JavaScript suchen
- Konvertieren von Argumenten in ein Array in JavaScript