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

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

buf.swap16()

Добавлено в: v5.10.0

  • Возвращает: <Буфер> Ссылку на buf.

Интерпретируется buf как массив 16-разрядных целых чисел без знака и меняет порядок байтов на месте. Бросает ERR_INVALID_BUFFER_SIZE, если buf.length не кратно 2.

const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);

console.log(buf1);
// Prints: <Buffer 01 02 03 04 05 06 07 08>

buf1.swap16();

console.log(buf1);
// Prints: <Buffer 02 01 04 03 06 05 08 07>

const buf2 = Buffer.from([0x1, 0x2, 0x3]);

buf2.swap16();
// Throws ERR_INVALID_BUFFER_SIZE.

Одним из удобных способов использования buf.swap16() является быстрое преобразование на месте между UTF-16 с малым концом и UTF-16 с большим концом:

const buf = Buffer.from('This is little-endian UTF-16', 'utf16le');
buf.swap16(); // Convert to big-endian UTF-16 text.

Метод Buffer.swap16() представляет собой встроенный интерфейс прикладного программирования класса Buffer в модуле Buffer, который используется для замены порядка байтов буфера на месте. Замена выполняется путем интерпретации буфера как массива 16-разрядных чисел.

Синтаксис:

Buffer.swap16()

Параметры: Этот метод не принимает никаких параметров.

Return value (Возвращаемое значение): Он возвращает ссылку на замененный буфер.

Error thrown (Выдана ошибка): Это бросает ERR_INVALID_BUFFER_SIZE если длина буфера (buf.length) не кратна 2.

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

Пример 1:

// Node.js program to demonstrate the
// Buffer.swap16() method
	
// Creating a buffer
const buf = Buffer.from([0x1, 0x2,
		0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);

// Display the buffer value
// before swap
console.log(buf);

// Using Buffer.swap16() method
buf.swap16();
	
// Display the result
// after swap
console.log(buf);

Выход:

<Buffer 01 02 03 04 05 06 07 08>
<Buffer 02 01 04 03 06 05 08 07>

Пример 2: В этом примере отображается ошибка, вызванная этим методом.

// Node.js program to demonstrate the
// Buffer.swap16() method
	
// Creating a buffer
const buf = Buffer.from([0x7, 0x5, 0x2]);

// Display the buffer value
// before swap
console.log(buf);

try {
	// Using Buffer.swap16() method
	// It will throw error
	buf.swap16();

	// Display the result
	// after swap
	console.log(buf);

}
catch(e) {
	console.log("Entering catch block");

	// Display error
	console.log(e);
}

Выход:

<Buffer 07 05 02>
Entering catch block
RangeError [ERR_INVALID_BUFFER_SIZE]: Buffer size
must be a multiple of 16-bits
 at Buffer.swap16 (buffer.js:1042:11)
 at /home/runner/index.js:14:9
 ......

Примечание: Вышеуказанная программа будет скомпилирована и запущена с помощью node index.js команда.

Ссылка: https://nodejs.org/dist/latest-v13.x/docs/api/buffer.html#buffer_buf_swap16