You are currently viewing Node.js Buffer | Свойство Buffer.byteOffset

Node.js Buffer | Свойство Buffer.byteOffset

buf.byteOffset

  • <bigint> О byteOffsetBuffer лежащем в основе s ArrayBuffer объекте.

При установке 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