将具有8位值的数组转换为带有char的字符串(无charcode)

时间:2014-05-03 16:28:08

标签: javascript arraybuffer fromcharcode

我找到了一个优雅的代码来将ArrayBuffer转换为charCode。

但我需要char,而不是charCode。

function ab2s (buf) {
  var view = new Uint8Array (buf);
  return Array.prototype.join.call (view, ",");
}

我试过

return Array.prototype.join.call (view, function() {String.fromCharCode(this)});

但这是废话。

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

return Array.prototype.join.call (view, function() {String.fromCharCode(this)});
     

但这是废话。

显然,由于Array::join没有采用回调来转换每个元素,而只采用了应该连接元素的分隔符。

相反,要在加入之前转换每个元素,您可以使用Array::map

return Array.prototype.map.call(view, function(charcode) {
    return String.fromCharCode(charcode);
}).join('');

但是,有一个更简单的解决方案,因为String.fromCharCode确实采用了多个参数:

return String.fromCharCode.apply(String, view);