我有一个字符串“ab05d705”,我正在尝试将其转换为以下内容,以便我可以将其添加到 Uint8Array 中。那么如何将字符串转换"ab05d705"为
0xab,0x05,0xd7,0x05
Run Code Online (Sandbox Code Playgroud)
放入以下
var data = new Uint8Array([0xab,0x05,0xd7,0x05]);
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
小智 8
Uint8Array 基本上是一个充满字符代码的数组,因此您可以拆分所有字符并将它们转换为字符代码,然后使用该数组并调用Uint8Array.from它。像这样的东西应该有效:
var string = "Hello World!"
var uint8 = Uint8Array.from(string.split("").map(x => x.charCodeAt()))
Run Code Online (Sandbox Code Playgroud)
您可以使用 Web API TextEncoder从字符串中获取 UTF-8 字节的 Uint8Array:
\nconst encoded = new TextEncoder().encode(\'\xe2\x82\xac\')\nconsole.log(encoded) // Uint8Array(3) [226, 130, 172]\nRun Code Online (Sandbox Code Playgroud)\n
如果您来自未来,Buffer.from(string,encoding)可能是最好的选择。
const uint: Uint8Array = Buffer.from('string here', 'base64')
Run Code Online (Sandbox Code Playgroud)
尝试这个:
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);
Run Code Online (Sandbox Code Playgroud)
parseInt(value, base)创建一个结合输入和给定基数的 JS 数字 - 在本例中我们使用基数16。