Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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

js
setFromHex(string)

Parameter

string

Eine hexadezimale Zeichenfolge, die die in ein Uint8Array zu 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 Uint8Array geschriebenen Bytes. Sie ist niemals größer als die byteLength dieses Uint8Array.

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.

js
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.

js
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.

js
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

Browser-Kompatibilität

Siehe auch