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

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

buf.toString([encoding[, start[, end]]])

Добавлено в: v0.1.90

  • encoding <строка> Кодировка символов для использования. 
  • По умолчанию: 'utf8'.
  • start <целое число> Смещение в байтах для начала декодирования. 
  • По умолчанию: 0.
  • end <целое число> Смещение байта для остановки декодирования (не включено). 
  • По умолчанию: buf.length.
  • Возвращает: <строка>

Декодируется buf в строку в соответствии с указанной кодировкой символов в encodingstart и end может быть передан для декодирования только подмножества buf.

Если encoding есть 'utf8'и последовательность байтов во входных данных недопустима UTF-8, то каждый недопустимый байт заменяется символом замены U+FFFD.

Максимальная длина экземпляра строки (в кодовых единицах UTF-16) доступна как buffer.constants.MAX_STRING_LENGTH.

import { Buffer } from 'buffer';

const buf1 = Buffer.allocUnsafe(26);

for (let i = 0; i < 26; i++) {
  // 97 is the decimal ASCII value for 'a'.
  buf1[i] = i + 97;
}

console.log(buf1.toString('utf8'));
// Prints: abcdefghijklmnopqrstuvwxyz
console.log(buf1.toString('utf8', 0, 5));
// Prints: abcde

const buf2 = Buffer.from('tést');

console.log(buf2.toString('hex'));
// Prints: 74c3a97374
console.log(buf2.toString('utf8', 0, 3));
// Prints: té
console.log(buf2.toString(undefined, 0, 3));
// Prints: té
const { Buffer } = require('buffer');

const buf1 = Buffer.allocUnsafe(26);

for (let i = 0; i < 26; i++) {
  // 97 is the decimal ASCII value for 'a'.
  buf1[i] = i + 97;
}

console.log(buf1.toString('utf8'));
// Prints: abcdefghijklmnopqrstuvwxyz
console.log(buf1.toString('utf8', 0, 5));
// Prints: abcde

const buf2 = Buffer.from('tést');

console.log(buf2.toString('hex'));
// Prints: 74c3a97374
console.log(buf2.toString('utf8', 0, 3));
// Prints: té
console.log(buf2.toString(undefined, 0, 3));
// Prints: té

Метод Buffer.toString() используется для декодирования данных буфера в строку в соответствии с указанным типом кодирования. Смещение начала и конца используется для декодирования только определенного подмножества буфера. Если последовательность байтов в данных буфера недопустима в соответствии с предоставленной кодировкой, то она заменяется символом замены по умолчанию, т. е. U+FFFD.

Синтаксис:

Buffer.toString( encoding, start, end )

Параметры: Этот метод принимает два параметра, как указано выше и описано ниже:

  • encoding (кодирование): Формат, в котором должны быть закодированы символы буферных данных. Его значение по умолчанию — ‘utf8’.
  • start (начало): Начальный индекс буферных данных, с которых должна начинаться кодировка. Его значение по умолчанию — 0.
  • end (конец): Последний индекс буферных данных, до которого необходимо выполнить кодирование. Его значение по умолчанию — Buffer.length.

Возвращаемое Значение: Он возвращает декодированную строку из буфера в строку в соответствии с указанной кодировкой символов.

Пример 1:

// Node.js program to demonstrate the
// Buffer.toString() Method
		
// Creating a buffer
var buffer = new Buffer.alloc(5);

// Loop to add value to the buffer
for (var i = 0; i < 5; i++) {
	buffer[i] = i + 97;
}

// Display the value of buffer
// in string format
console.log(buffer.toString());
console.log(buffer.toString('utf-8', 1, 4));
console.log(buffer.toString('hex'));

Выход:

abcde
bcd
6162636465

Пояснение: В приведенном выше примере мы объявили переменный буфер размером 5 и заполнили его значением ASCII от » a » до «e». Затем мы использовали метод toString() без каких-либо параметров, который возвращает строку со стилем кодировки по умолчанию, то есть ‘UTF-8’ полного буфера. В следующей строке он возвращает строку со стилем кодировки ‘UTF-8’ с индексом от 1 до 3 (здесь 4 исключено). Наконец, он возвращает строковое представление со стилем кодировки » ШЕСТНАДЦАТЕРИЧНЫЙ’.

Пример 2:

// Node.js program to demonstrate the
// Buffer.toString() Method
		
// Creating a buffer
var buffer = new Buffer.alloc(5);

// Loop to add value to the buffer
for (var i = 0; i < 5; i++) {
	buffer[i] = i + 97;
}

// Display the value of buffer
// in string format
console.log(buffer.toString(undefined));

Выход:

abcde

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

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