0

我有个问题。我需要与 C 节点通信 javascript。

该协议使用带有 0xAAAA 标头的字符串。

在 JS 中,我有一个带有 {\xAA,\xAA} 的 Uint8Array 我的问题是我需要将 Uint8Array 转换为 String UTF-8 。

如何从 UTF-8 中的 Uint8Array 转换为 uTF-8 字符串)

4

2 回答 2

1

试试:

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 二进制数据打包和解包。

于 2017-05-12T09:57:46.060 回答
1

使用文本解码器。像这个:

const decoder = new TextDecoder("utf-8");
const str = decoder.decode(Buffer.from([0xAA, 0xAA]));
于 2021-04-30T11:24:51.103 回答