Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 109 из 114 · 9 мин
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float16Array, Float32Array, Float64Array, BigInt64Array, BigUint64Array, BYTES_PER_ELEMENT, from, of, buffer, byteOffset, set и subarray.
Байт — число от 0 до 255. Два байта — до 65535. Для каждого размера есть свой типизированный массив.
Int8Array · Uint8Array · Uint8ClampedArray · Int16ArrayInt8Array −128…127, Uint8Array 0…255 (переполнение по кругу), Uint8ClampedArray 0…255 с обрезкой (пиксели canvas), Int16Array −32768…32767.console.log(new Uint8Array([300])[0], new Uint8ClampedArray([300])[0], new Int8Array([200])[0], new Int16Array([40000])[0]);Uint16Array · Int32Array · Uint32Array · Float16ArrayUint16Array 0…65535, Int32Array и Uint32Array — 32-битные целые, Float16Array — дробные половинной точности (графика, нейросети).console.log(new Uint16Array([70000])[0], new Uint32Array([-1])[0], new Float16Array([0.1])[0]);Float32Array · Float64Array · BigInt64Array · BigUint64ArrayFloat32Array — одинарная точность (WebGL), Float64Array — как обычные числа, BigInt64Array/BigUint64Array — 64-битные целые в виде BigInt.console.log(new Float32Array([0.1])[0], new Float64Array([0.1])[0], new BigInt64Array([-1n])[0], new BigUint64Array([-1n])[0]);BYTES_PER_ELEMENTconsole.log(Uint8Array.BYTES_PER_ELEMENT, Float32Array.BYTES_PER_ELEMENT, BigInt64Array.BYTES_PER_ELEMENT);TypedArray.from() · TypedArray.of()console.log(Uint8Array.from([1, 2, 3], (x) => x * 10), Float32Array.of(0.5, 1.5));buffer · byteLength · byteOffset · lengthbuffer — сам буфер, byteOffset — где начинается окно, byteLength — размер в байтах, length — число элементов.const buf = new ArrayBuffer(8);
const view = new Uint16Array(buf, 2, 2);
console.log(view.buffer === buf, view.byteOffset, view.byteLength, view.length);set() · subarray()set(array, offset) копирует значения внутрь; subarray(a, b) — новое окно в тот же буфер (без копирования, в отличие от slice).const all = new Uint8Array(6);
all.set([1, 2, 3], 3);
const tail = all.subarray(3);
tail[0] = 9;
console.log(all, tail.length);subarray делит память с исходным массивом, slice — копирует. Меняешь окно — меняешь оригинал.
Собери packet — Uint8Array из 4 байт: в начало запиши header через set, а в body сохрани subarray с индекса 2 (окно, а не копию).
Выберите один ответ.
Что окажется в new Uint8Array([256])[0]?
Проверяем состояние обучения…