Uint8Array.prototype.setFromHex()
Baseline 2025>
Neu verfügbar
Seit September 2025 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
Die Methode setFromHex() von Uint8Array-Instanzen füllt dieses Uint8Array-Objekt mit Bytes aus einer hexadezimal codierten Zeichenfolge. Sie gibt ein Objekt zurück, das angibt, wie viele Zeichen gelesen und wie viele Bytes geschrieben wurden.
Diese Methode wandelt die Zeichenfolge in ein Byte-Array um. Wenn Sie die Zeichenfolge stattdessen in eine einzelne Zahl umwandeln möchten, verwenden Sie die Funktion parseInt() mit dem Wert 16 für radix.
Syntax
setFromHex(string)
Parameter
string-
Eine hexadezimale Zeichenfolge, die die in ein
Uint8Arrayzu schreibenden Bytes codiert. Die Zeichenfolge muss:- Eine gerade Anzahl von Zeichen haben, da jeweils zwei Zeichen ein Byte codieren.
- Ausschließlich Zeichen des hexadezimalen Alphabets enthalten, also 0–9 und A–F (ohne Unterscheidung zwischen Groß- und Kleinschreibung).
- Frei von Leerraum sein (anders als bei
Uint8Array.prototype.setFromBase64()).
Beachten Sie, dass die Zeichenfolge nur bis zu dem Punkt gelesen wird, an dem das Array gefüllt ist. Ungültige hexadezimale Syntax nach diesem Punkt wird daher ignoriert.
Rückgabewert
Ein Objekt mit den folgenden Eigenschaften:
read-
Die Anzahl der aus der Eingabezeichenfolge gelesenen hexadezimalen Zeichen. Wenn die decodierten Daten in das Array passen, entspricht sie der Länge der Eingabezeichenfolge. Andernfalls ist sie die Anzahl der vollständigen Paare hexadezimaler Zeichen, die in das Array passen.
written-
Die Anzahl der in das
Uint8Arraygeschriebenen Bytes. Sie ist niemals größer als diebyteLengthdiesesUint8Array.
Ausnahmen
SyntaxError-
Wird ausgelöst, wenn die Eingabezeichenfolge Zeichen außerhalb des hexadezimalen Alphabets enthält oder ihre Länge ungerade ist.
TypeError-
Wird ausgelöst, wenn die Eingabe keine Zeichenfolge ist.
Beispiele
>Decodieren einer hexadezimalen Zeichenfolge
Dieses Beispiel decodiert eine hexadezimale Zeichenfolge in ein vorhandenes Uint8Array.
const uint8Array = new Uint8Array(8);
const result = uint8Array.setFromHex("cafed00d");
console.log(result); // { read: 8, written: 4 }
console.log(uint8Array); // Uint8Array(8) [202, 254, 208, 13, 0, 0, 0, 0]
Decodieren einer langen Zeichenfolge in ein kleines Array
Wenn die Zeichenfolge mehr Daten enthält, als das Array aufnehmen kann, schreibt die Methode nur so viele Bytes, wie das Array aufnehmen kann.
const uint8Array = new Uint8Array(4);
const result = uint8Array.setFromHex("cafed00d-some random stuff");
console.log(result); // { read: 8, written: 4 }
console.log(uint8Array); // Uint8Array(4) [202, 254, 208, 13]
Überzählige Zeichen werden ignoriert, selbst wenn sie ungültig sind. Die Gesamtlänge der Eingabezeichenfolge muss jedoch gerade sein.
Schreiben von Daten ab einem bestimmten Offset
Die Methode setFromHex() beginnt immer am Anfang des Uint8Array mit dem Schreiben. Wenn Sie Daten in die Mitte des Arrays schreiben möchten, können Sie stattdessen in ein TypedArray.prototype.subarray() schreiben.
const uint8Array = new Uint8Array(8);
// Start writing at offset 2
const result = uint8Array.subarray(2).setFromHex("cafed00d");
console.log(result); // { read: 8, written: 4 }
console.log(uint8Array);
// Uint8Array(8) [0, 0, 202, 254, 208, 13, 0, 0]
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-uint8array.prototype.setfromhex> |