bedna
bedna

Reputation: 1370

Convert array with 8bit value to string with char (no charcode)

I found an elegant code to converts ArrayBuffer into charCode.

But I need char, instead of charCode.

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

I tried

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

But this is crap.

Thanks for answers.

Upvotes: 0

Views: 1285

Answers (1)

Bergi
Bergi

Reputation: 664474

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

But this is crap.

Obviously, since Array::join does not take a callback to transform each element but only the separator by which the elements should be joined.

Instead, to transform every element before joining them you would use Array::map:

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

However, there is a much easier solution, as String.fromCharCode does take multiple arguments:

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

Upvotes: 1

Related Questions