Преобразовать массив с 8-битным значением в строку с символом (без кода)
Я нашел элегантный код для преобразования 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 ответ
Решение
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);