Uint8Array.prototype.setFromHex()
Базовый уровень Впервые доступно
Эта функция работает на последних устройствах и версиях браузеров. Эта функция может не работать в старых устройствах или версиях браузеров. Она доступна во всех браузерах с сентября 2025 года.
Метод setFromHex() экземпляров Uint8Array заполняет этот объект Uint8Array байтами из строки в шестнадцатеричной кодировке, возвращая объект, указывающий, сколько байтов было прочитано и записано.
Этот метод анализирует строку в виде массива байтов. Чтобы преобразовать строку в одно число, используйте функцию parseInt(), установив radix в 16, вместо этого.
Синтаксис
setFromHex(string)
Параметры
-
string - Шестнадцатеричная строка, кодирующая байты для записи в
Uint8Array. Строка должна:- Иметь четное количество символов, так как два символа кодируют один байт.
- Содержать только символы из шестнадцатеричного алфавита, который включает 0–9 и A–F (без учета регистра).
- Не содержать пробелов (в отличие от
Uint8Array.prototype.setFromBase64()).
Обратите внимание, что строка считывается только до того момента, пока массив не будет заполнен, поэтому любой недопустимый шестнадцатеричный синтаксис после этой точки игнорируется.
Возвращаемое значение
Объект, содержащий следующие свойства:
-
read - Количество шестнадцатеричных символов, прочитанных из входной строки. Если декодированные данные помещаются в массив, это длина входной строки; в противном случае это количество полных шестнадцатеричных символов, которые помещаются в массив.
-
written - Количество байтов, записанных в
Uint8Array. Никогда не будет превышатьbyteLengthэтогоUint8Array.
Исключения
-
SyntaxError - Генерируется, если входная строка содержит символы вне шестнадцатеричного алфавита или имеет нечетную длину.
-
TypeError - Генерируется, если входная строка не является строкой.
Примеры
Декодирование шестнадцатеричной строки
Этот пример декодирует шестнадцатеричную строку в существующий 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]
Декодирование большой строки в маленький массив
Если строка содержит больше данных, чем может вместить массив, метод запишет только то количество байтов, которое может вместить массив.
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]
Лишние символы игнорируются, даже если они недействительны. Однако общая длина входной строки должна быть четной.
Установка данных с определенным смещением
Метод setFromHex() всегда начинает запись с начала Uint8Array. Если вы хотите записать данные в середину массива, вы можете вместо этого записать их в TypedArray.prototype.subarray().
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]
Спецификации
Совместимость с браузерами
| Desktop | Mobile | Server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
setFromHex |
140 |
140 |
133 |
124 |
18.2 |
140 |
133 |
92 |
18.2 |
30.0 |
140 |
18.2 |
1.1.22 |
2.5.0 |
25.0.0 |
Смотрите также
- Полифил
Uint8Array.prototype.setFromHexвcore-js - Полифил es-shims
Uint8Array.prototype.setFromHex Uint8ArrayUint8Array.fromHex()Uint8Array.prototype.toHex()parseInt()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array/setFromHex