在javascript中将字符串转换为Uint8Array

Convert string to Uint8Array in javascript

本文关键字:转换 Uint8Array 字符串 javascript      更新时间:2023-09-26

我有一个字符串"ab05d705",我正在尝试将其转换为以下内容,以便我可以将其添加到Uint8Array中。那么如何将字符串"ab05d705"转换为

0xab,0x05,0xd7,0x05 

放入以下内容

var data = new Uint8Array([0xab,0x05,0xd7,0x05]); 

任何帮助将不胜感激。

Uint8Array 基本上是一个充满 charcode 的数组,因此您可以拆分所有字符并将它们转换为 charcode,然后使用该数组并在其上调用 Uint8Array.from。这样的事情应该有效:

var string = "Hello World!"
var uint8 = Uint8Array.from(string.split("").map(x => x.charCodeAt()))

如果你来自未来,Buffer.from(字符串,编码)可能是最好的选择。

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(value, base)创建一个结合输入和给定基数的 JS 编号 - 在这种情况下,我们使用基数16

您可以使用 Web API 文本编码器从字符串中获取 UTF-8 字节的 Uint8Array :

const encoded = new TextEncoder().encode('€')
console.log(encoded) // Uint8Array(3) [226, 130, 172]

在节点中,文本编码器可从node:util

import { TextEncoder } from 'node:util'
// const { TextEncoder } = require('node:util')