我有一些UTF-8编码的数据生活在Javascript Uint8Array元素的范围内。是否有一种有效的方法来解码这些到一个常规的javascript字符串(我相信javascript使用16位Unicode)?我不想一次添加一个字符,因为字符串连接会变得CPU密集。


当前回答

在节点“缓冲区实例也是Uint8Array实例”,所以buf.toString()在这种情况下工作。

其他回答

var decodedString = decodeURIComponent(escape(String.fromCharCode(...new Uint8Array(err)))); var obj = JSON.parse(decodedString);

以下是我使用的方法:

var str = String.fromCharCode.apply(null, uint8Arr);

在节点“缓冲区实例也是Uint8Array实例”,所以buf.toString()在这种情况下工作。

对于ES6和UTF8字符串

decodeURIComponent(escape(String.fromCharCode(...uint8arrData)))

我正在使用这个Typescript代码片段:

function UInt8ArrayToString(uInt8Array: Uint8Array): string
{
    var s: string = "[";
    for(var i: number = 0; i < uInt8Array.byteLength; i++)
    {
        if( i > 0 )
            s += ", ";
        s += uInt8Array[i];
    }
    s += "]";
    return s;
}

如果需要JavaScript版本,则删除类型注释。 希望这能有所帮助!