buf.byteOffset
- <bigint> О
byteOffsetBuffer
лежащем в основе sArrayBuffer
объекте.
При установке byteOffsetBuffer.from(ArrayBuffer, byteOffset, length)
или иногда при выделении Buffer
меньшего, чем Buffer.poolSize
, буфера не начинается со смещения нуля на базовом ArrayBuffer
.
Это может вызвать проблемы при прямом доступе к базовому ArrayBuffer
использованию buf.buffer
, так как другие части ArrayBuffer
могут быть не связаны с самим Buffer
объектом.
Распространенная проблема при создании TypedArray
объекта, который разделяет свою память с a Buffer
, заключается в том, что в этом случае необходимо правильно указать byteOffset
:
/ Create a buffer smaller than `Buffer.poolSize`.
const nodeBuffer = new Buffer.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
// When casting the Node.js Buffer to an Int8Array, use the byteOffset
// to refer only to the part of `nodeBuffer.buffer` that contains the memory
// for `nodeBuffer`.
new Int8Array(nodeBuffer.buffer, nodeBuffer.byteOffset, nodeBuffer.length);
Свойство Buffer.byteOffset — это встроенный интерфейс прикладного программирования класса Buffer в модуле buffer, который используется для получения значения смещения байта этого буфера.
Синтаксис:
const Buffer.byteOffset
Return Value (Возвращаемое Значение): Это свойство возвращает объект буфера массива.
Пример 1: Имя файла: index.js
// Node.js program to demonstrate the
// Buffer.byteOffset property
// Creating and initializing arraybuffer object
const arrbuff = new ArrayBuffer(16);
// Getting buffer object form existing
// arraybuffer object
const buffer = Buffer.from(arrbuff);
// Getting byteoffset of buffer
// by using byoffset property
const bytoff = buffer.byteOffset;
// Display the result
console.log("byteoffset is : " + bytoff);
Выход:
byteoffset : 0
Пример 2: Имя файла: index.js
// Node.js program to demonstrate the
// Buffer.byteOffset property
// Creating and initializing arraybuffer object
const arrbuff = new ArrayBuffer(16);
// Getting buffer object form existing
// arraybuffer object
const buffer = Buffer.from(arrbuff);
// Getting byteoffset of buffer
// by using byoffset api
const bytoff = buffer.byteOffset;
const buff = new Int8Array(buffer, bytoff, buffer.length);
// Display the result
console.log("Int8Arry object : " + buff);
Выход:
Int8Arry object : 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Запустите index.js файл с помощью следующей команды:
node index.js
Ссылка: https://nodejs.org/dist/latest-v12.x/docs/api/buffer.html#buffer_buf_byteoffset