You are currently viewing Node.js Buffer | Метод Buffer.writeInt32BE()

Node.js Buffer | Метод Buffer.writeInt32BE()

buf.writeInt32BE(value[, offset])

ВерсияИзменения
v10.0.0Удалено noAssert, и больше нет неявного принуждения к смещению uint32.
v0.5.5Добавлено в: v0.5.5
  • value <целое число> Число, в которое нужно записать buf.
  • offset <целое число> Количество байтов, которые необходимо пропустить перед началом записи. 
  • Должен удовлетворить 0 <= offset <= buf.length - 4
  • По умолчанию: 0.
  • Возвращает: <целое число> offset плюс количество записанных байтов.

Записывает valuebuf в указанный offset как big-endian. Значение value должно быть допустимым 32-разрядным целым числом со знаком. Поведение не определено, если value это что-либо иное, чем 32-разрядное целое число со знаком.

Значение value интерпретируется и записывается как целое число со знаком, дополняющее два.

import { Buffer } from 'buffer';

const buf = Buffer.allocUnsafe(4);

buf.writeInt32BE(0x01020304, 0);

console.log(buf);
// Prints: <Buffer 01 02 03 04>
const { Buffer } = require('buffer');

const buf = Buffer.allocUnsafe(4);

buf.writeInt32BE(0x01020304, 0);

console.log(buf);
// Prints: <Buffer 01 02 03 04>

Метод Buffer.writeInt32BE() представляет собой встроенный интерфейс прикладного программирования класса Buffer в модуле Buffer, который используется для записи целого значения в буфер с указанным смещением в формате big-endian, целочисленное значение должно быть допустимым 32-разрядным целым числом со знаком. Ошибка возникает, если значение выходит за пределы 32-разрядного целого числа со знаком.Целочисленное значение интерпретируется и записывается как целое число со знаком, дополняющим два.

Синтаксис:

Buffer.writeInt32BE( value, offset )

Параметры: Этот метод принимает два параметра, как указано выше и описано ниже:
value (ценность): Этот параметр содержит 32-разрядное целое число со знаком, которое необходимо записать в буфер.
offset (смещение): Этот параметр содержит целое значение, т. е. количество байтов, которые необходимо пропустить перед началом записи в буфер. Значение смещения лежит между от 0 to buf.length – 4. Это необязательный параметр, и его значение по умолчанию равно 0.

Возвращаемое Значение: Этот метод возвращает целое значение, т. е. сумму смещения плюс количество записанных байтов.

Ниже приведены примеры, иллюстрирующие использование buf.writeInt32BE() способ в Node.js:

Пример 1:

// Node.js program to demonstrate the
// Buffer.writeInt32BE() Method

// Allocating buffer space of 4 bytes
const buf = Buffer.allocUnsafe(4);

// Writing the value to the buffer
buf.writeInt32BE(0x7bcaf892);

// Display the buffer to stdout
console.log(buf);

Выход:

<Buffer 7b ca f8 92>

Пример 2:

// Node.js program to demonstrate the
// Buffer.writeInt32BE() Method

// Allocating buffer space of 8 bytes
const buf = Buffer.allocUnsafe(8);

// Writing the value to the buffer from 0 offset
buf.writeInt32BE(0x7bcaf983, 0);

// Writing the value to the buffer from 4 offset
buf.writeInt32BE(0x7fffffff, 4);

// Display the buffer to stdout
console.log(buf);

Выход:

<Buffer 7b ca f9 83 7f ff ff ff>

Пример 3: В этом примере отобразится сообщение об ошибке, так как смещение превышает предельное значение, т. е. значение смещения не лежит в пределах от 0 до buf.длина – 4.

// Node.js program to demonstrate the
// Buffer.writeInt32BE() Method

// Allocating buffer space of 8 bytes
const buf = Buffer.allocUnsafe(8);

// Writing the value to the buffer from 0 offset
buf.writeInt32BE(0x7bcaf983, 0);

// Writing the value to the buffer from 4 offset
buf.writeInt32BE(0x7fffffff, 5);

// Display the buffer to stdout
console.log(buf);

Выход:

internal/buffer.js:72
  throw new ERR_OUT_OF_RANGE(type || 'offset',
  ^

RangeError [ERR_OUT_OF_RANGE]: The value of "offset" is out of range.
It must be >= 0 and <= 4. Received 5
. . .

Ссылка: https://nodejs.org/api/buffer.html#buffer_buf_writeint32be_value_offset