@newaitix

Как использовать ArrayBuffer на практике?

На сайте msdn нашел вот такой пример.
var req = new XMLHttpRequest();
    req.open('GET', "/");
    req.responseType = "arraybuffer";
    req.send();

    req.onreadystatechange = function () {
        if (req.readyState === 4) {
            var buffer = req.response;
            var dataview = new DataView(buffer);
            var ints = new Int32Array(buffer.byteLength / 4);
            for (var i = 0; i < ints.length; i++) {
                ints[i] = dataview.getInt32(i * 4);
            }
        console.log(ints);
        }
    }

На выходе получаем "Int32Array(4493) [1008813135, 1129601360, 1159751796, 1835810364, 1752460652, 1044146277, 1633959437,..."

Вопрос - как преобразовать полученные данные в строку ?
Вернее как преобразовать допустим вот это "1008813135" ?
  • Вопрос задан
  • 712 просмотров
Пригласить эксперта
Ответы на вопрос 1
Я не правильно понял вопрос :).
Если немного изменить пример, а именно: в переменную ints вместо Int32Array поместить Int8Array и , если дело происходит в браузере,(я запускал в консоли), буфер преобразуется в строку с помощью TextDecoder.decode()
var req = new XMLHttpRequest();
    req.open('GET', "/");
    req.responseType = "arraybuffer";
    req.send();
let ints
    req.onreadystatechange = function () {
        if (req.readyState === 4) {
            var buffer = req.response;
            var dataview = new DataView(buffer);
            ints = new Int8Array(buffer.byteLength);
            for (var i = 0; i < ints.length; i++) {
                ints[i] = dataview.getInt8(i);
            }
       console.log( new TextDecoder("utf-8").decode(ints))
        }
    }

Так же есть и другие способы:Как преобразовать Uint8Array в строку в Javascript(eng)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы