我有个问题。我需要与 C 节点通信 javascript。
该协议使用带有 0xAAAA 标头的字符串。
在 JS 中,我有一个带有 {\xAA,\xAA} 的 Uint8Array 我的问题是我需要将 Uint8Array 转换为 String UTF-8 。
如何从 UTF-8 中的 Uint8Array 转换为 uTF-8 字符串)
我有个问题。我需要与 C 节点通信 javascript。
该协议使用带有 0xAAAA 标头的字符串。
在 JS 中,我有一个带有 {\xAA,\xAA} 的 Uint8Array 我的问题是我需要将 Uint8Array 转换为 String UTF-8 。
如何从 UTF-8 中的 Uint8Array 转换为 uTF-8 字符串)
试试:
function str2arr(str) {
var utf8 = unescape(encodeURIComponent(str));
return new Uint8Array(utf8.split('').map(function (item) {
return item.charCodeAt();
}));
}
function arr2str(arr) {
// or [].slice.apply(arr)
var utf8 = Array.from(arr).map(function (item) {
return String.fromCharCode(item);
}).join('');
return decodeURIComponent(escape(utf8));
}
var arr = str2arr('汉字');
document.querySelector('div').innerHTML = arr;
document.querySelector('div:nth-of-type(2)').innerHTML = arr2str(arr);
<div></div>
<div></div>
[0xAA, 0xAA] 是无效的 utf8 数组。
供参考:https ://github.com/zswang/jpacks 二进制数据打包和解包。
使用文本解码器。像这个:
const decoder = new TextDecoder("utf-8");
const str = decoder.decode(Buffer.from([0xAA, 0xAA]));