Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 108 из 114 · 7 мин
ArrayBuffer, byteLength, slice, ArrayBuffer.isView, изменяемые буферы resizable, maxByteLength, resize и передача transfer, transferToFixedLength, detached.
Датчик присылает какие-то байты. Это вообще можно прочитать в JavaScript?
Можно. ArrayBuffer — кусок памяти, а читать его будем через типизированные массивы и DataView.
ArrayBuffer · byteLength · slice()new ArrayBuffer(16) — 16 байт, заполненных нулями. Напрямую читать нельзя — только через «представления». byteLength — размер, slice(a, b) — копия куска.const buf = new ArrayBuffer(8);
console.log(buf.byteLength, buf.slice(2, 6).byteLength);ArrayBuffer.isView()console.log(ArrayBuffer.isView(new Uint8Array(2)), ArrayBuffer.isView(new ArrayBuffer(2)));resizable · maxByteLength · resize()new ArrayBuffer(4, { maxByteLength: 16 }) — буфер, который можно увеличить resize(n) до максимума; resizable — можно ли.const buf = new ArrayBuffer(4, { maxByteLength: 16 });
buf.resize(12);
console.log(buf.resizable, buf.byteLength, buf.maxByteLength);transfer() · transferToFixedLength() · detachedtransfer(n) — новый буфер с теми же данными, а старый «отсоединяется» (detached = true, длина 0). transferToFixedLength — то же, но новый не растёт.const a = new ArrayBuffer(8);
const b = a.transfer();
const c = b.transferToFixedLength(4);
console.log(a.detached, a.byteLength, b.detached, c.byteLength, c.resizable);ArrayBuffer — только память. Читать и писать её будешь через Uint8Array, Float32Array или DataView.
Создай buf — растущий ArrayBuffer на 8 байт с максимумом 64, увеличь его до 32 байт, и isBinary(x) — true для буфера или любого представления.
Выберите один ответ.
Как прочитать байты из ArrayBuffer?
Проверяем состояние обучения…