Преобразовать строку в 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

Другие вопросы по тегам