JavaScript ArrayBuffer — сирі двійкові дані


ArrayBuffer — блок сирої двійкової пам'яті фіксованого розміру. Сам по собі він нечитабельний: це просто байти.

автор: NagarD

Загальний опис

Щоб щось зробити з буфером, потрібне вікно в нього — типізований масив (Uint8Array, Float32Array) або DataView. Буфер зберігає байти, вікно каже, як їх тлумачити.

Один і той самий буфер можна дивитись різними вікнами одночасно — і вони бачитимуть ті самі байти. Зміна через одне вікно миттєво видима в іншому: копіювання не відбувається.

Зустрічається скрізь, де є справжні двійкові дані: файли (FileReader, fetch().arrayBuffer()), WebSocket, WebGL, аудіо, криптографія.

автор: NagarD

Нотатка

Розмір буфера фіксований з моменту створення. «Дописати в кінець» не можна — треба створити більший буфер і скопіювати.

автор: NagarD

Синтаксис

const buf = new ArrayBuffer(16);

властивості

Властивість Опис
byteLength Розмір буфера в байтах.

методи

Метод Опис
slice Копіює діапазон у новий буфер.
isView Чи є аргумент представленням буфера (TypedArray або DataView).

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
ArrayBuffer 7+ 4+ 5.1+ 11.6+ 12+ 10+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
ArrayBuffer 4+ yes yes 4.2+

Приклади

+ запропонувати свій приклад у пісочниці

Одна пам'ять, два різні вікна в неї.

(async () => {
    const buffer = new ArrayBuffer(4); // 4 байти

    const bytes = new Uint8Array(buffer);
    bytes[0] = 255;
    bytes[1] = 1;

    // інше вікно в ТУ САМУ пам'ять
    const asInt = new Uint32Array(buffer);
    console.log(asInt[0]); // 511 — ті самі байти, інше тлумачення

    // типовий шлях: файл із мережі
    try {
        const response = await fetch('/img/logo.svg');
        const data = new Uint8Array(await response.arrayBuffer());
        console.log(data.length, 'байтів');
    } catch (error) {
        console.log('Файл недоступний:', error.message);
    }
})();
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід