在字符串中转换数组缓冲区

时间:2017-11-22 09:57:55

标签: javascript typescript arraybuffer

我在使用typescript(angular 4项目)将arraybuffer转换为string时遇到困难。任何帮助都非常感谢。

代码输出显示字符串,但带有此符号 -

必需输出:

计划“Digitala†rsredovisningen”

获取输出:

计划“Digitala rsredovisningen”

  
ab2str(arraybuffer) {
        return String.fromCharCode.apply(null, new Uint8Array(arraybuffer));
      }

5 个答案:

答案 0 :(得分:2)

你应该尝试这样的事情:

function uintToString(uintArray) {
    var encodedString = String.fromCharCode.apply(null, uintArray),
        decodedString = decodeURIComponent(escape(encodedString));
    return decodedString;
}

也许这会有所帮助:

https://ourcodeworld.com/articles/read/164/how-to-convert-an-uint8array-to-string-in-javascript

答案 1 :(得分:0)

这将允许unicode字符

ab2str(arraybuffer) {
    return String.fromCharCode.apply(null, new Uint16Array(arraybuffer));
  }

答案 2 :(得分:0)

this reference,您可以查看以下内容:

function ab2str(buf) {
  return String.fromCharCode.apply(null, new Uint16Array(buf));
}

function str2ab(str) {
  var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
  var bufView = new Uint16Array(buf);
  for (var i=0, strLen=str.length; i < strLen; i++) {
    bufView[i] = str.charCodeAt(i);
  }
  return buf;
}

此外,如果您can use使用TextEncoderTextEncoder,请检查this answer

答案 3 :(得分:0)

这对我有用。

我有一个SHA256哈希值,我需要将其转换为String。

function ab2str(hashBuffer) {
    const hashArray = Array.from(new Uint8Array(hashBuffer));
    const hashHex = hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');
    return hashHex;
  }

答案 4 :(得分:0)

如果您遇到与Shifali singla(中文字符)相同的问题,只需更改以下内容即可:

  

返回String.fromCharCode.apply(null,新的Uint16Array(arraybuffer));

对此

  

返回String.fromCharCode.apply(null,新的Uint8Array(arraybuffer));

缓冲区可能在unit8array中而不是在unit16array中