Преобразовать строку в Uint8Array в JavaScript
У меня есть строка "ab05d705", и я пытаюсь преобразовать ее в следующее, чтобы я мог добавить ее в массив Uint8Array. Так как мне преобразовать строку "ab05d705"
в
0xab,0x05,0xd7,0x05
положить в следующее
var data = new Uint8Array([0xab,0x05,0xd7,0x05]);
Любая помощь будет так ценится.
4 ответа
Uint8Array в основном представляет собой массив, полный кодов символов, поэтому вы можете разделить все символы и преобразовать их в коды символов, а затем использовать этот массив и вызвать
Uint8Array.from
в теме. Что-то вроде этого должно работать:
var string = "Hello World!"
var uint8 = Uint8Array.from(string.split("").map(x => x.charCodeAt())
Вы можете использовать Web API TextEncoder для получения Uint8Array байтов UTF-8 из строки:
const encoder = new TextEncoder()
const encoded = encoder.encode('€')
console.log(encoded) // Uint8Array(3) [226, 130, 172]
В узле TextEncoder доступен изnode:util
:
import { TextEncoder } from 'node:util'
// const { TextEncoder } = require('node:util')
Если вы пришли из будущего, Buffer.from(string, encoding) - вероятно, лучший вариант.
const uint: Uint8Array = Buffer.from('string here', 'base64')
Попробуй это:
var s = "ab05d705";
var result = [];
for(var i = 0; i < s.length; i+=2)
{
result.push(parseInt(s.substring(i, i + 2), 16));
}
result = Uint8Array.from(result)
console.log(result);
parseInt (значение, база);
Эта функция преобразует значение с заданной базой в значение с основанием 10