buffer
Объекты Buffer используются для представления последовательности байтов фиксированной длины. Многие API Node.js поддерживают Buffers.
Класс Buffer является подклассом класса JavaScript Uint8Array и расширяет его методами для дополнительных сценариев использования. API Node.js также принимают обычные Uint8Array везде, где поддерживаются Buffers.
Хотя класс Buffer доступен в глобальной области видимости, рекомендуется явно ссылаться на него с помощью оператора import или require.
import { Buffer } from 'node:buffer';
// Creates a zero-filled Buffer of length 10.
const buf1 = Buffer.alloc(10);
// Creates a Buffer of length 10,
// filled with bytes which all have the value `1`.
const buf2 = Buffer.alloc(10, 1);
// Creates an uninitialized buffer of length 10.
// This is faster than calling Buffer.alloc() but the returned
// Buffer instance might contain old data that needs to be
// overwritten using fill(), write(), or other functions that fill the Buffer's
// contents.
const buf3 = Buffer.allocUnsafe(10);
// Creates a Buffer containing the bytes [1, 2, 3].
const buf4 = Buffer.from([1, 2, 3]);
// Creates a Buffer containing the bytes [1, 1, 1, 1] – the entries
// are all truncated using `(value & 255)` to fit into the range 0–255.
const buf5 = Buffer.from([257, 257.5, -255, '1']);
// Creates a Buffer containing the UTF-8-encoded bytes for the string 'tést':
// [0x74, 0xc3, 0xa9, 0x73, 0x74] (in hexadecimal notation)
// [116, 195, 169, 115, 116] (in decimal notation)
const buf6 = Buffer.from('tést');
// Creates a Buffer containing the Latin-1 bytes [0x74, 0xe9, 0x73, 0x74].
const buf7 = Buffer.from('tést', 'latin1');
Использование в Deno
import * as mod from "node:buffer";
класс Blob
Использование в Deno
import { Blob } from "node:buffer";
Blob инкапсулирует неизменяемые необработанные данные, которыми можно безопасно обмениваться между несколькими рабочими потоками.
Конструкторы
Blob(
sources: Array<>,
options?: BlobOptions,
) Создаёт новый объект Blob, содержащий объединённые указанные источники.
Источники {ArrayBuffer}, {TypedArray}, {DataView} и {Buffer} копируются в «Blob», поэтому их можно безопасно изменять после создания «Blob».
Строковые источники также копируются в Blob.
Свойства
Методы
arrayBuffer(): Promise<ArrayBuffer> Возвращает промис, который разрешается в ArrayBuffer, содержащий копию данных Blob.
bytes(): Promise<Uint8Array> Метод blob.bytes() возвращает байты объекта Blob в виде Promise<Uint8Array>.
const blob = new Blob(['hello']);
blob.bytes().then((bytes) => {
console.log(bytes); // Outputs: Uint8Array(5) [ 104, 101, 108, 108, 111 ]
});
Создаёт и возвращает новый объект Blob, содержащий подмножество данных этого объекта Blob. Исходный Blob не изменяется.
stream(): WebReadableStream Возвращает новый ReadableStream, позволяющий прочитать содержимое Blob.
text(): Promise<string> Возвращает промис, который разрешается в содержимое Blob, декодированное в строку UTF-8.
интерфейс Blob
переменная Blob
Класс Blob — это глобальная ссылка на import { Blob } from 'node:buffer' https://nodejs.org/api/buffer.html#class-blob
Тип
globalThis extends { onmessage: any; Blob: infer T; } ? T : buffer класс File
Использование в Deno
import { File } from "node:buffer";
File предоставляет информацию о файлах.
Конструкторы
File() Свойства
lastModified: number Дата последнего изменения File.
name: string Имя File.
интерфейс File
переменная File
Класс File — это глобальная ссылка на import { File } from 'node:buffer' https://nodejs.org/api/buffer.html#class-file
Тип
globalThis extends { onmessage: any; File: infer T; } ? T : buffer функция atob
Использование в Deno
import { atob } from "node:buffer";
atob(data: string): stringДекодирует строку данных в кодировке Base64 в байты, а затем кодирует эти байты в строку с использованием Latin-1 (ISO-8859-1).
Значением data может быть любое значение JavaScript, которое можно преобразовать в строку.
Эта функция предоставляется только для совместимости с устаревшими API веб-платформы и никогда не должна использоваться в новом коде, поскольку эти API используют строки для представления двоичных данных и появились до внедрения типизированных массивов в JavaScript. В коде, использующем API Node.js, преобразование между строками в кодировке Base64 и двоичными данными следует выполнять с помощью Buffer.from(str, 'base64') и buf.toString('base64').
Параметры
data: string Входная строка в кодировке Base64.
Возвращаемый тип
string функция btoa
Использование в Deno
import { btoa } from "node:buffer";
btoa(data: string): stringДекодирует строку в байты с использованием Latin-1 (ISO-8859), а затем кодирует эти байты в строку с использованием Base64.
Значением data может быть любое значение JavaScript, которое можно преобразовать в строку.
Эта функция предоставляется только для совместимости с устаревшими API веб-платформы и никогда не должна использоваться в новом коде, поскольку эти API используют строки для представления двоичных данных и появились до внедрения типизированных массивов в JavaScript. В коде, использующем API Node.js, преобразование между строками в кодировке Base64 и двоичными данными следует выполнять с помощью Buffer.from(str, 'base64') и buf.toString('base64').
Параметры
data: string Строка ASCII (Latin1).
Возвращаемый тип
string функция isAscii
Использование в Deno
import { isAscii } from "node:buffer";
isAscii(input: ): booleanЭта функция возвращает true, если input содержит только допустимые данные в кодировке ASCII, в том числе если input пуст.
Вызывает исключение, если input является отсоединённым буфером массива.
Параметры
input: Входные данные для проверки.
Возвращаемый тип
boolean функция isUtf8
Использование в Deno
import { isUtf8 } from "node:buffer";
isUtf8(input: ): booleanЭта функция возвращает true, если input содержит только допустимые данные в кодировке UTF-8, в том числе если input пуст.
Вызывает исключение, если input является отсоединённым буфером массива.
Параметры
input: Входные данные для проверки.
Возвращаемый тип
boolean функция resolveObjectURL
Использование в Deno
import { resolveObjectURL } from "node:buffer";
resolveObjectURL(id: string): Blob | undefinedРазрешает 'blob:nodedata:...' в связанный объект Blob, зарегистрированный предыдущим вызовом URL.createObjectURL().
Параметры
id: string Строка URL 'blob:nodedata:..., возвращённая предыдущим вызовом URL.createObjectURL().
Возвращаемый тип
Blob | undefined функция transcode
Использование в Deno
import { transcode } from "node:buffer";
transcode(): BufferПовторно кодирует указанный экземпляр Buffer или Uint8Array из одной кодировки символов в другую. Возвращает новый экземпляр Buffer.
Вызывает исключение, если fromEnc или toEnc задают недопустимые кодировки символов либо если преобразование из fromEnc в toEnc не разрешено.
Поддерживаемые buffer.transcode() кодировки: 'ascii', 'utf8', 'utf16le', 'ucs2', 'latin1' и 'binary'.
В процессе перекодирования будут использоваться символы-заменители, если заданную последовательность байтов невозможно корректно представить в целевой кодировке. Например:
import { Buffer, transcode } from 'node:buffer';
const newBuf = transcode(Buffer.from('€'), 'utf8', 'ascii');
console.log(newBuf.toString('ascii'));
// Prints: '?'
Поскольку знак евро (€) не может быть представлен в US-ASCII, в перекодированном Buffer он заменяется на ?.
Параметры
source: Uint8Array Экземпляр Buffer или Uint8Array.
fromEnc: TranscodeEncoding Текущая кодировка.
toEnc: TranscodeEncoding Целевая кодировка.
Возвращаемый тип
интерфейс BlobOptions
Использование в Deno
import { type BlobOptions } from "node:buffer";
Свойства
endings: "transparent" | "native" Одно из значений: 'transparent' или 'native'. Если задано значение 'native', окончания строк в строковых частях источника будут преобразованы в собственный для платформы формат окончания строк, указанный в import { EOL } from 'node:os'.
type: string | undefined Тип содержимого Blob. Предполагается, что type указывает тип MIME данных, однако формат типа не проверяется.
интерфейс Buffer
Использование в Deno
import { type Buffer } from "node:buffer";
Параметры типа
TArrayBuffer extends ArrayBufferLike = ArrayBufferLike Методы
Возвращает новый Buffer, который ссылается на ту же область памяти, что и исходный, но со смещением и обрезанный по индексам start и end.
Этот метод несовместим с Uint8Array.prototype.slice(), являющимся суперклассом Buffer. Чтобы скопировать срез, используйте Uint8Array.prototype.slice().
import { Buffer } from 'node:buffer';
const buf = Buffer.from('buffer');
const copiedBuf = Uint8Array.prototype.slice.call(buf);
copiedBuf[0]++;
console.log(copiedBuf.toString());
// Prints: cuffer
console.log(buf.toString());
// Prints: buffer
// With buf.slice(), the original buffer is modified.
const notReallyCopiedBuf = buf.slice();
notReallyCopiedBuf[0]++;
console.log(notReallyCopiedBuf.toString());
// Prints: cuffer
console.log(buf.toString());
// Also prints: cuffer (!)
subarray(
start?: number,
end?: number,
): Buffer<TArrayBuffer> Возвращает новый Buffer, который ссылается на ту же область памяти, что и исходный, но со смещением и обрезанный по индексам start и end.
Если end больше buf.length, результат будет таким же, как при end, равном buf.length.
Этот метод наследуется от TypedArray.prototype.subarray().
Изменение нового среза Buffer изменит память исходного Buffer, поскольку выделенная память двух объектов пересекается.
import { Buffer } from 'node:buffer';
// Create a `Buffer` with the ASCII alphabet, take a slice, and modify one byte
// from the original `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;
}
const buf2 = buf1.subarray(0, 3);
console.log(buf2.toString('ascii', 0, buf2.length));
// Prints: abc
buf1[0] = 33;
console.log(buf2.toString('ascii', 0, buf2.length));
// Prints: !bc
При указании отрицательных индексов срез создаётся относительно конца buf, а не начала.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('buffer');
console.log(buf.subarray(-6, -1).toString());
// Prints: buffe
// (Equivalent to buf.subarray(0, 5).)
console.log(buf.subarray(-6, -2).toString());
// Prints: buff
// (Equivalent to buf.subarray(0, 4).)
console.log(buf.subarray(-5, -2).toString());
// Prints: uff
// (Equivalent to buf.subarray(1, 4).)
Методы
write(
string: string,
encoding?: BufferEncoding,
): number Записывает string в buf по адресу offset согласно кодировке символов вencoding. Параметр length — это количество байтов для записи. Если в buf недостаточно места для всей строки, будет записана только её часть — string. Однако частично закодированные символы записываться не будут.
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(256);
const len = buf.write('\u00bd + \u00bc = \u00be', 0);
console.log(`${len} bytes: ${buf.toString('utf8', 0, len)}`);
// Prints: 12 bytes: ½ + ¼ = ¾
const buffer = Buffer.alloc(10);
const length = buffer.write('abcd', 8);
console.log(`${length} bytes: ${buffer.toString('utf8', 8, 10)}`);
// Prints: 2 bytes : ab
write(): number write(): number toString(): string Декодирует buf в строку согласно указанной кодировке символов вencoding. start и end можно передать, чтобы декодировать только часть buf.
Если encoding — это 'utf8', а последовательность байтов во входных данных не является допустимым UTF-8, каждый недопустимый байт заменяется символом замены U+FFFD.
Максимальная длина экземпляра строки (в 16-битных кодовых единицах UTF-16) доступна в constants.MAX_STRING_LENGTH.
import { Buffer } from 'node: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é
toJSON(): { type: "Buffer"; data: number[]; } Возвращает JSON-представление buf. JSON.stringify() неявно вызывает эту функцию при преобразовании экземпляра Buffer в строку.
Buffer.from() принимает объекты в формате, возвращаемом этим методом. В частности, Buffer.from(buf.toJSON()) работает так же, как Buffer.from(buf).
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
const json = JSON.stringify(buf);
console.log(json);
// Prints: {"type":"Buffer","data":[1,2,3,4,5]}
const copy = JSON.parse(json, (key, value) => {
return value && value.type === 'Buffer' ?
Buffer.from(value) :
value;
});
console.log(copy);
// Prints: <Buffer 01 02 03 04 05>
equals(otherBuffer: Uint8Array): boolean Возвращает true, если buf и otherBuffer содержат совершенно одинаковые байты, иное значение — false. Эквивалентно buf.compare(otherBuffer) === 0.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from('ABC');
const buf2 = Buffer.from('414243', 'hex');
const buf3 = Buffer.from('ABCD');
console.log(buf1.equals(buf2));
// Prints: true
console.log(buf1.equals(buf3));
// Prints: false
compare(
target: Uint8Array,
targetStart?: number,
targetEnd?: number,
sourceStart?: number,
sourceEnd?: number,
):
-1
| 0
| 1
Сравнивает buf с target и возвращает число, указывающее, находится ли buf перед target, после него или совпадает с ним в порядке сортировки. Сравнение основано на фактической последовательности байтов в каждом Buffer.
-
0возвращается, еслиtargetсовпадает сbuf -
1возвращается, еслиtargetдолжно идти передbufпри сортировке. -
-1возвращается, еслиtargetдолжно идти послеbufпри сортировке.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from('ABC');
const buf2 = Buffer.from('BCD');
const buf3 = Buffer.from('ABCD');
console.log(buf1.compare(buf1));
// Prints: 0
console.log(buf1.compare(buf2));
// Prints: -1
console.log(buf1.compare(buf3));
// Prints: -1
console.log(buf2.compare(buf1));
// Prints: 1
console.log(buf2.compare(buf3));
// Prints: 1
console.log([buf1, buf2, buf3].sort(Buffer.compare));
// Prints: [ <Buffer 41 42 43>, <Buffer 41 42 43 44>, <Buffer 42 43 44> ]
// (This result is equal to: [buf1, buf3, buf2].)
Необязательные аргументы targetStart, targetEnd, sourceStart и sourceEnd можно использовать, чтобы ограничить сравнение определёнными диапазонами в target и buf соответственно.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9]);
const buf2 = Buffer.from([5, 6, 7, 8, 9, 1, 2, 3, 4]);
console.log(buf1.compare(buf2, 5, 9, 0, 4));
// Prints: 0
console.log(buf1.compare(buf2, 0, 6, 4));
// Prints: -1
console.log(buf1.compare(buf2, 5, 6, 5));
// Prints: 1
Выбрасывается ERR_OUT_OF_RANGE, если targetStart < 0, sourceStart < 0, targetEnd > target.byteLength или sourceEnd > source.byteLength.
copy(
target: Uint8Array,
targetStart?: number,
sourceStart?: number,
sourceEnd?: number,
): number Копирует данные из области buf в область target, даже если области памяти target пересекаются с buf.
TypedArray.prototype.set() выполняет ту же операцию и доступен для всех TypedArray, включая Buffer Node.js, хотя принимает другие аргументы функции.
import { Buffer } from 'node:buffer';
// Create two `Buffer` instances.
const buf1 = Buffer.allocUnsafe(26);
const buf2 = Buffer.allocUnsafe(26).fill('!');
for (let i = 0; i < 26; i++) {
// 97 is the decimal ASCII value for 'a'.
buf1[i] = i + 97;
}
// Copy `buf1` bytes 16 through 19 into `buf2` starting at byte 8 of `buf2`.
buf1.copy(buf2, 8, 16, 20);
// This is equivalent to:
// buf2.set(buf1.subarray(16, 20), 8);
console.log(buf2.toString('ascii', 0, 25));
// Prints: !!!!!!!!qrst!!!!!!!!!!!!!
import { Buffer } from 'node:buffer';
// Create a `Buffer` and copy data from one region to an overlapping region
// within the same `Buffer`.
const buf = Buffer.allocUnsafe(26);
for (let i = 0; i < 26; i++) {
// 97 is the decimal ASCII value for 'a'.
buf[i] = i + 97;
}
buf.copy(buf, 0, 4, 10);
console.log(buf.toString());
// Prints: efghijghijklmnopqrstuvwxyz
writeBigInt64BE(
value: bigint,
offset?: number,
): number Записывает value в buf по указанному адресу offset в порядке от старшего байта к младшему.
value интерпретируется и записывается как знаковое целое число в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeBigInt64BE(0x0102030405060708n, 0);
console.log(buf);
// Prints: <Buffer 01 02 03 04 05 06 07 08>
writeBigInt64LE(
value: bigint,
offset?: number,
): number Записывает value в buf по указанному адресу offset в порядке от младшего байта к старшему.
value интерпретируется и записывается как знаковое целое число в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeBigInt64LE(0x0102030405060708n, 0);
console.log(buf);
// Prints: <Buffer 08 07 06 05 04 03 02 01>
writeBigUInt64BE(
value: bigint,
offset?: number,
): number Записывает value в buf по указанному адресу offset в порядке от старшего байта к младшему.
Эта функция также доступна под псевдонимом writeBigUint64BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeBigUInt64BE(0xdecafafecacefaden, 0);
console.log(buf);
// Prints: <Buffer de ca fa fe ca ce fa de>
writeBigUint64BE(
value: bigint,
offset?: number,
): number writeBigUInt64LE(
value: bigint,
offset?: number,
): number Записывает value в buf по указанному адресу offset в порядке от младшего байта к старшему
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeBigUInt64LE(0xdecafafecacefaden, 0);
console.log(buf);
// Prints: <Buffer de fa ce ca fe fa ca de>
Эта функция также доступна под псевдонимом writeBigUint64LE.
writeBigUint64LE(
value: bigint,
offset?: number,
): number writeUIntLE(
value: number,
offset: number,
byteLength: number,
): number Записывает byteLength байт значения value в buf по указанному адресу offset в порядке от младшего байта к старшему. Поддерживается точность до 48 бит. Поведение не определено, если value не является беззнаковым целым числом.
Эта функция также доступна под псевдонимом writeUintLE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(6);
buf.writeUIntLE(0x1234567890ab, 0, 6);
console.log(buf);
// Prints: <Buffer ab 90 78 56 34 12>
writeUintLE(
value: number,
offset: number,
byteLength: number,
): number writeUIntBE(
value: number,
offset: number,
byteLength: number,
): number Записывает byteLength байт значения value в buf по указанному адресу offset в порядке от старшего байта к младшему. Поддерживается точность до 48 бит. Поведение не определено, если value не является беззнаковым целым числом.
Эта функция также доступна под псевдонимом writeUintBE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(6);
buf.writeUIntBE(0x1234567890ab, 0, 6);
console.log(buf);
// Prints: <Buffer 12 34 56 78 90 ab>
writeUintBE(
value: number,
offset: number,
byteLength: number,
): number writeIntLE(
value: number,
offset: number,
byteLength: number,
): number Записывает byteLength байт значения value в buf по указанному адресу offset в порядке от младшего байта к старшему. Поддерживается точность до 48 бит. Поведение не определено, если value не является знаковым целым числом.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(6);
buf.writeIntLE(0x1234567890ab, 0, 6);
console.log(buf);
// Prints: <Buffer ab 90 78 56 34 12>
writeIntBE(
value: number,
offset: number,
byteLength: number,
): number Записывает byteLength байт значения value в buf по указанному адресу offset в порядке от старшего байта к младшему. Поддерживается точность до 48 бит. Поведение не определено, если value не является знаковым целым числом.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(6);
buf.writeIntBE(0x1234567890ab, 0, 6);
console.log(buf);
// Prints: <Buffer 12 34 56 78 90 ab>
readBigUInt64BE(offset?: number): bigint Считывает беззнаковое 64-битное целое число из buf по указанному адресуoffset в порядке от старшего байта к младшему.
Эта функция также доступна под псевдонимом readBigUint64BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]);
console.log(buf.readBigUInt64BE(0));
// Prints: 4294967295n
readBigUint64BE(offset?: number): bigint readBigUInt64LE(offset?: number): bigint Считывает беззнаковое 64-битное целое число из buf по указанному адресуoffset в порядке от младшего байта к старшему.
Эта функция также доступна под псевдонимом readBigUint64LE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff]);
console.log(buf.readBigUInt64LE(0));
// Prints: 18446744069414584320n
readBigUint64LE(offset?: number): bigint readBigInt64BE(offset?: number): bigint Считывает знаковое 64-битное целое число из buf по указанному адресу offset в порядке от старшего байта к младшему.
Целые числа, считанные из Buffer, интерпретируются как знаковые значения в дополнительном коде.
readBigInt64LE(offset?: number): bigint Считывает знаковое 64-битное целое число из buf по указанному адресуoffset в порядке от младшего байта к старшему.
Целые числа, считанные из Buffer, интерпретируются как знаковые значения в дополнительном коде.
readUIntLE(
offset: number,
byteLength: number,
): number Считывает byteLength байт из buf по указанному адресу offset и интерпретирует результат как беззнаковое целое число в порядке от младшего байта к старшему с точностью до 48 бит.
Эта функция также доступна под псевдонимом readUintLE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readUIntLE(0, 6).toString(16));
// Prints: ab9078563412
readUintLE(
offset: number,
byteLength: number,
): number readUIntBE(
offset: number,
byteLength: number,
): number Считывает byteLength байт из buf по указанному адресу offset и интерпретирует результат как беззнаковое целое число в порядке от старшего байта к младшему с точностью до 48 бит.
Эта функция также доступна под псевдонимом readUintBE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readUIntBE(0, 6).toString(16));
// Prints: 1234567890ab
console.log(buf.readUIntBE(1, 6).toString(16));
// Throws ERR_OUT_OF_RANGE.
readUintBE(
offset: number,
byteLength: number,
): number readIntLE(
offset: number,
byteLength: number,
): number Считывает byteLength байт из buf по указанному адресу offset и интерпретирует результат как знаковое значение в дополнительном коде в порядке от младшего байта к старшему с точностью до 48 бит.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readIntLE(0, 6).toString(16));
// Prints: -546f87a9cbee
readIntBE(
offset: number,
byteLength: number,
): number Считывает byteLength байт из buf по указанному адресу offset и интерпретирует результат как знаковое значение в дополнительном коде в порядке от старшего байта к младшему с точностью до 48 бит.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]);
console.log(buf.readIntBE(0, 6).toString(16));
// Prints: 1234567890ab
console.log(buf.readIntBE(1, 6).toString(16));
// Throws ERR_OUT_OF_RANGE.
console.log(buf.readIntBE(1, 0).toString(16));
// Throws ERR_OUT_OF_RANGE.
readUInt8(offset?: number): number Считывает беззнаковое 8-битное целое число из buf по указанному адресу offset.
Эта функция также доступна под псевдонимом readUint8.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, -2]);
console.log(buf.readUInt8(0));
// Prints: 1
console.log(buf.readUInt8(1));
// Prints: 254
console.log(buf.readUInt8(2));
// Throws ERR_OUT_OF_RANGE.
readUint8(offset?: number): number readUInt16LE(offset?: number): number Считывает беззнаковое 16-битное целое число из buf по указанному адресу offset в порядке от младшего байта к старшему.
Эта функция также доступна под псевдонимом readUint16LE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56]);
console.log(buf.readUInt16LE(0).toString(16));
// Prints: 3412
console.log(buf.readUInt16LE(1).toString(16));
// Prints: 5634
console.log(buf.readUInt16LE(2).toString(16));
// Throws ERR_OUT_OF_RANGE.
readUint16LE(offset?: number): number readUInt16BE(offset?: number): number Считывает беззнаковое 16-битное целое число из buf по указанному адресуoffset в порядке от старшего байта к младшему.
Эта функция также доступна под псевдонимом readUint16BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56]);
console.log(buf.readUInt16BE(0).toString(16));
// Prints: 1234
console.log(buf.readUInt16BE(1).toString(16));
// Prints: 3456
readUint16BE(offset?: number): number readUInt32LE(offset?: number): number Считывает беззнаковое 32-битное целое число из buf по указанному адресуoffset в порядке от младшего байта к старшему.
Эта функция также доступна под псевдонимом readUint32LE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]);
console.log(buf.readUInt32LE(0).toString(16));
// Prints: 78563412
console.log(buf.readUInt32LE(1).toString(16));
// Throws ERR_OUT_OF_RANGE.
readUint32LE(offset?: number): number readUInt32BE(offset?: number): number Считывает беззнаковое 32-битное целое число из buf по указанному адресуoffset в порядке от старшего байта к младшему.
Эта функция также доступна под псевдонимом readUint32BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0x12, 0x34, 0x56, 0x78]);
console.log(buf.readUInt32BE(0).toString(16));
// Prints: 12345678
readUint32BE(offset?: number): number readInt8(offset?: number): number Считывает знаковое 8-битное целое число из buf по указанному адресу offset.
Целые числа, считанные из Buffer, интерпретируются как знаковые значения в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([-1, 5]);
console.log(buf.readInt8(0));
// Prints: -1
console.log(buf.readInt8(1));
// Prints: 5
console.log(buf.readInt8(2));
// Throws ERR_OUT_OF_RANGE.
readInt16LE(offset?: number): number Считывает знаковое 16-битное целое число из buf по указанному адресуoffset в порядке от младшего байта к старшему.
Целые числа, считанные из Buffer, интерпретируются как знаковые значения в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0, 5]);
console.log(buf.readInt16LE(0));
// Prints: 1280
console.log(buf.readInt16LE(1));
// Throws ERR_OUT_OF_RANGE.
readInt16BE(offset?: number): number Считывает знаковое 16-битное целое число из buf по указанному адресу offset в порядке от старшего байта к младшему.
Целые числа, считанные из Buffer, интерпретируются как знаковые значения в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0, 5]);
console.log(buf.readInt16BE(0));
// Prints: 5
readInt32LE(offset?: number): number Считывает знаковое 32-битное целое число из buf по указанному адресуoffset в порядке от младшего байта к старшему.
Целые числа, считанные из Buffer, интерпретируются как знаковые значения в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0, 0, 0, 5]);
console.log(buf.readInt32LE(0));
// Prints: 83886080
console.log(buf.readInt32LE(1));
// Throws ERR_OUT_OF_RANGE.
readInt32BE(offset?: number): number Считывает знаковое 32-битное целое число из buf по указанному адресу offset в порядке от старшего байта к младшему.
Целые числа, считанные из Buffer, интерпретируются как знаковые значения в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([0, 0, 0, 5]);
console.log(buf.readInt32BE(0));
// Prints: 5
readFloatLE(offset?: number): number Считывает 32-битное число с плавающей точкой из buf по указанному адресу offset в порядке от младшего байта к старшему.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, 2, 3, 4]);
console.log(buf.readFloatLE(0));
// Prints: 1.539989614439558e-36
console.log(buf.readFloatLE(1));
// Throws ERR_OUT_OF_RANGE.
readFloatBE(offset?: number): number Считывает 32-битное число с плавающей точкой из buf по указанному адресу offset в порядке от старшего байта к младшему.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, 2, 3, 4]);
console.log(buf.readFloatBE(0));
// Prints: 2.387939260590663e-38
readDoubleLE(offset?: number): number Считывает 64-битное число с плавающей точкой двойной точности из buf по указанному адресу offset в порядке от младшего байта к старшему.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]);
console.log(buf.readDoubleLE(0));
// Prints: 5.447603722011605e-270
console.log(buf.readDoubleLE(1));
// Throws ERR_OUT_OF_RANGE.
readDoubleBE(offset?: number): number Считывает 64-битное число с плавающей точкой двойной точности из buf по указанному адресу offset в порядке от старшего байта к младшему.
import { Buffer } from 'node:buffer';
const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8]);
console.log(buf.readDoubleBE(0));
// Prints: 8.20788039913184e-304
reverse(): this swap16(): this Интерпретирует buf как массив беззнаковых 16-битных целых чисел и меняет порядок байтов на месте. Выбрасывает ERR_INVALID_BUFFER_SIZE, если длина buf.length не кратна 2.
import { Buffer } from 'node:buffer';
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 с порядком от старшего к младшему:
import { Buffer } from 'node:buffer';
const buf = Buffer.from('This is little-endian UTF-16', 'utf16le');
buf.swap16(); // Convert to big-endian UTF-16 text.
swap32(): this Интерпретирует buf как массив беззнаковых 32-битных целых чисел и меняет порядок байтов на месте. Выбрасывает ERR_INVALID_BUFFER_SIZE, если длина buf.length не кратна 4.
import { Buffer } from 'node:buffer';
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.swap32();
console.log(buf1);
// Prints: <Buffer 04 03 02 01 08 07 06 05>
const buf2 = Buffer.from([0x1, 0x2, 0x3]);
buf2.swap32();
// Throws ERR_INVALID_BUFFER_SIZE.
swap64(): this Интерпретирует buf как массив 64-битных чисел и меняет порядок байтов на месте. Выбрасывает ERR_INVALID_BUFFER_SIZE, если длина buf.length не кратна 8.
import { Buffer } from 'node:buffer';
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.swap64();
console.log(buf1);
// Prints: <Buffer 08 07 06 05 04 03 02 01>
const buf2 = Buffer.from([0x1, 0x2, 0x3]);
buf2.swap64();
// Throws ERR_INVALID_BUFFER_SIZE.
writeUInt8(
value: number,
offset?: number,
): number Записывает value в buf по указанному адресу offset. value должно быть допустимым беззнаковым 8-битным целым числом. Поведение не определено, если value не является беззнаковым 8-битным целым числом.
Эта функция также доступна под псевдонимом writeUint8.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeUInt8(0x3, 0);
buf.writeUInt8(0x4, 1);
buf.writeUInt8(0x23, 2);
buf.writeUInt8(0x42, 3);
console.log(buf);
// Prints: <Buffer 03 04 23 42>
writeUint8(
value: number,
offset?: number,
): number writeUInt16LE(
value: number,
offset?: number,
): number Записывает value в buf по указанному адресу offset в порядке от младшего байта к старшему. value должно быть допустимым беззнаковым 16-битным целым числом. Поведение не определено, если value не является беззнаковым 16-битным целым числом.
Эта функция также доступна под псевдонимом writeUint16LE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeUInt16LE(0xdead, 0);
buf.writeUInt16LE(0xbeef, 2);
console.log(buf);
// Prints: <Buffer ad de ef be>
writeUint16LE(
value: number,
offset?: number,
): number writeUInt16BE(
value: number,
offset?: number,
): number Записывает value в buf по указанному адресу offset в порядке от старшего байта к младшему. value должно быть допустимым беззнаковым 16-битным целым числом. Поведение не определено, если value не является беззнаковым 16-битным целым числом.
Эта функция также доступна под псевдонимом writeUint16BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeUInt16BE(0xdead, 0);
buf.writeUInt16BE(0xbeef, 2);
console.log(buf);
// Prints: <Buffer de ad be ef>
writeUint16BE(
value: number,
offset?: number,
): number writeUInt32LE(
value: number,
offset?: number,
): number Записывает value в buf по указанному адресу offset в порядке от младшего байта к старшему. value должно быть допустимым беззнаковым 32-битным целым числом. Поведение не определено, если value не является беззнаковым 32-битным целым числом.
Эта функция также доступна под псевдонимом writeUint32LE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeUInt32LE(0xfeedface, 0);
console.log(buf);
// Prints: <Buffer ce fa ed fe>
writeUint32LE(
value: number,
offset?: number,
): number writeUInt32BE(
value: number,
offset?: number,
): number Записывает value в buf по указанному адресу offset в порядке от старшего байта к младшему. value должно быть допустимым беззнаковым 32-битным целым числом. Поведение не определено, если value не является беззнаковым 32-битным целым числом.
Эта функция также доступна под псевдонимом writeUint32BE.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeUInt32BE(0xfeedface, 0);
console.log(buf);
// Prints: <Buffer fe ed fa ce>
writeUint32BE(
value: number,
offset?: number,
): number writeInt8(
value: number,
offset?: number,
): number Записывает value в buf по указанному адресу offset. value должно быть допустимым знаковым 8-битным целым числом. Поведение не определено, если value не является знаковым 8-битным целым числом.
value интерпретируется и записывается как знаковое целое число в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(2);
buf.writeInt8(2, 0);
buf.writeInt8(-2, 1);
console.log(buf);
// Prints: <Buffer 02 fe>
writeInt16LE(
value: number,
offset?: number,
): number Записывает value в buf по указанному offset в порядке от младшего байта к старшему. value должно быть допустимым 16-битным целым числом со знаком. Поведение не определено, если value не является 16-битным целым числом со знаком.
Значение value интерпретируется и записывается как целое число со знаком в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(2);
buf.writeInt16LE(0x0304, 0);
console.log(buf);
// Prints: <Buffer 04 03>
writeInt16BE(
value: number,
offset?: number,
): number Записывает value в buf по указанному offset в порядке от старшего байта к младшему. value должно быть допустимым 16-битным целым числом со знаком. Поведение не определено, если value не является 16-битным целым числом со знаком.
Значение value интерпретируется и записывается как целое число со знаком в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(2);
buf.writeInt16BE(0x0102, 0);
console.log(buf);
// Prints: <Buffer 01 02>
writeInt32LE(
value: number,
offset?: number,
): number Записывает value в buf по указанному offset в порядке от младшего байта к старшему. value должно быть допустимым 32-битным целым числом со знаком. Поведение не определено, если value не является 32-битным целым числом со знаком.
Значение value интерпретируется и записывается как целое число со знаком в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeInt32LE(0x05060708, 0);
console.log(buf);
// Prints: <Buffer 08 07 06 05>
writeInt32BE(
value: number,
offset?: number,
): number Записывает value в buf по указанному offset в порядке от старшего байта к младшему. value должно быть допустимым 32-битным целым числом со знаком. Поведение не определено, если value не является 32-битным целым числом со знаком.
Значение value интерпретируется и записывается как целое число со знаком в дополнительном коде.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeInt32BE(0x01020304, 0);
console.log(buf);
// Prints: <Buffer 01 02 03 04>
writeFloatLE(
value: number,
offset?: number,
): number Записывает value в buf по указанному offset в порядке от младшего байта к старшему. Поведение не определено, если value не является числом JavaScript.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeFloatLE(0xcafebabe, 0);
console.log(buf);
// Prints: <Buffer bb fe 4a 4f>
writeFloatBE(
value: number,
offset?: number,
): number Записывает value в buf по указанному offset в порядке от старшего байта к младшему. Поведение не определено, если value не является числом JavaScript.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(4);
buf.writeFloatBE(0xcafebabe, 0);
console.log(buf);
// Prints: <Buffer 4f 4a fe bb>
writeDoubleLE(
value: number,
offset?: number,
): number Записывает value в buf по указанному offset в порядке от младшего байта к старшему. value должно быть числом JavaScript. Поведение не определено, если value не является числом JavaScript.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeDoubleLE(123.456, 0);
console.log(buf);
// Prints: <Buffer 77 be 9f 1a 2f dd 5e 40>
writeDoubleBE(
value: number,
offset?: number,
): number Записывает value в buf по указанному offset в порядке от старшего байта к младшему. value должно быть числом JavaScript. Поведение не определено, если value не является числом JavaScript.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(8);
buf.writeDoubleBE(123.456, 0);
console.log(buf);
// Prints: <Buffer 40 5e dd 2f 1a 9f be 77>
fill(): this Заполняет buf указанным value. Если offset и end не заданы, будет заполнен весь buf:
import { Buffer } from 'node:buffer';
// Fill a `Buffer` with the ASCII character 'h'.
const b = Buffer.allocUnsafe(50).fill('h');
console.log(b.toString());
// Prints: hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
// Fill a buffer with empty string
const c = Buffer.allocUnsafe(5).fill('');
console.log(c.fill(''));
// Prints: <Buffer 00 00 00 00 00>
Значение value приводится к типу uint32, если оно не является строкой, Buffer или целым числом. Если полученное целое число больше 255 (десятичное), buf будет заполнен значением value & 255.
Если последняя запись в операции fill() приходится на многобайтовый символ, в buf записываются только байты этого символа, которые в него помещаются:
import { Buffer } from 'node:buffer';
// Fill a `Buffer` with character that takes up two bytes in UTF-8.
console.log(Buffer.allocUnsafe(5).fill('\u0222'));
// Prints: <Buffer c8 a2 c8 a2 c8>
Если value содержит недопустимые символы, оно усекается; если после этого не остается допустимых данных для заполнения, выбрасывается исключение:
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(5);
console.log(buf.fill('a'));
// Prints: <Buffer 61 61 61 61 61>
console.log(buf.fill('aazz', 'hex'));
// Prints: <Buffer aa aa aa aa aa>
console.log(buf.fill('zz', 'hex'));
// Throws an exception.
indexOf(): number Если value является:
- строкой,
valueинтерпретируется с учетом кодировки символов вencoding. - объектом
BufferилиUint8Array, будет использовано значениеvalueцеликом. Чтобы сравнить частьBuffer, используйтеbuf.subarray. - числом,
valueбудет интерпретировано как беззнаковое 8-битное целое число в диапазоне от0до255.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('this is a buffer');
console.log(buf.indexOf('this'));
// Prints: 0
console.log(buf.indexOf('is'));
// Prints: 2
console.log(buf.indexOf(Buffer.from('a buffer')));
// Prints: 8
console.log(buf.indexOf(97));
// Prints: 8 (97 is the decimal ASCII value for 'a')
console.log(buf.indexOf(Buffer.from('a buffer example')));
// Prints: -1
console.log(buf.indexOf(Buffer.from('a buffer example').slice(0, 8)));
// Prints: 8
const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');
console.log(utf16Buffer.indexOf('\u03a3', 0, 'utf16le'));
// Prints: 4
console.log(utf16Buffer.indexOf('\u03a3', -4, 'utf16le'));
// Prints: 6
Если value не является строкой, числом или Buffer, этот метод выбросит исключение TypeError. Если value является числом, оно будет приведено к допустимому значению байта — целому числу от 0 до 255.
Если byteOffset не является числом, оно будет приведено к числу. Если результатом приведения является NaN или 0, будет выполнен поиск по всему буферу. Такое поведение соответствует String.prototype.indexOf().
import { Buffer } from 'node:buffer';
const b = Buffer.from('abcdef');
// Passing a value that's a number, but not a valid byte.
// Prints: 2, equivalent to searching for 99 or 'c'.
console.log(b.indexOf(99.9));
console.log(b.indexOf(256 + 99));
// Passing a byteOffset that coerces to NaN or 0.
// Prints: 1, searching the whole buffer.
console.log(b.indexOf('b', undefined));
console.log(b.indexOf('b', {}));
console.log(b.indexOf('b', null));
console.log(b.indexOf('b', []));
Если value — пустая строка или пустой Buffer, а byteOffset меньше buf.length, будет возвращено byteOffset. Если value пуст, а byteOffset не меньше buf.length, будет возвращено buf.length.
lastIndexOf(): number Идентичен buf.indexOf(), но находит последнее вхождение value, а не первое.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('this buffer is a buffer');
console.log(buf.lastIndexOf('this'));
// Prints: 0
console.log(buf.lastIndexOf('buffer'));
// Prints: 17
console.log(buf.lastIndexOf(Buffer.from('buffer')));
// Prints: 17
console.log(buf.lastIndexOf(97));
// Prints: 15 (97 is the decimal ASCII value for 'a')
console.log(buf.lastIndexOf(Buffer.from('yolo')));
// Prints: -1
console.log(buf.lastIndexOf('buffer', 5));
// Prints: 5
console.log(buf.lastIndexOf('buffer', 4));
// Prints: -1
const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');
console.log(utf16Buffer.lastIndexOf('\u03a3', undefined, 'utf16le'));
// Prints: 6
console.log(utf16Buffer.lastIndexOf('\u03a3', -5, 'utf16le'));
// Prints: 4
Если value не является строкой, числом или Buffer, этот метод выбросит исключение TypeError. Если value является числом, оно будет приведено к допустимому значению байта — целому числу от 0 до 255.
Если byteOffset не является числом, оно будет приведено к числу. Любые аргументы, которые приводятся к NaN, например {} или undefined, приведут к поиску по всему буферу. Такое поведение соответствует String.prototype.lastIndexOf().
import { Buffer } from 'node:buffer';
const b = Buffer.from('abcdef');
// Passing a value that's a number, but not a valid byte.
// Prints: 2, equivalent to searching for 99 or 'c'.
console.log(b.lastIndexOf(99.9));
console.log(b.lastIndexOf(256 + 99));
// Passing a byteOffset that coerces to NaN.
// Prints: 1, searching the whole buffer.
console.log(b.lastIndexOf('b', undefined));
console.log(b.lastIndexOf('b', {}));
// Passing a byteOffset that coerces to 0.
// Prints: -1, equivalent to passing 0.
console.log(b.lastIndexOf('b', null));
console.log(b.lastIndexOf('b', []));
Если value — пустая строка или пустой Buffer, будет возвращено byteOffset.
includes(): boolean Эквивалентен buf.indexOf() !== -1.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('this is a buffer');
console.log(buf.includes('this'));
// Prints: true
console.log(buf.includes('is'));
// Prints: true
console.log(buf.includes(Buffer.from('a buffer')));
// Prints: true
console.log(buf.includes(97));
// Prints: true (97 is the decimal ASCII value for 'a')
console.log(buf.includes(Buffer.from('a buffer example')));
// Prints: false
console.log(buf.includes(Buffer.from('a buffer example').slice(0, 8)));
// Prints: true
console.log(buf.includes('this', 4));
// Prints: false
Методы
Возвращает новый Buffer, ссылающийся на ту же область памяти, что и исходный, но со смещением и усеченный по индексам start и end.
Этот метод несовместим с Uint8Array.prototype.slice(), суперклассом Buffer. Чтобы скопировать срез, используйте Uint8Array.prototype.slice().
import { Buffer } from 'node:buffer';
const buf = Buffer.from('buffer');
const copiedBuf = Uint8Array.prototype.slice.call(buf);
copiedBuf[0]++;
console.log(copiedBuf.toString());
// Prints: cuffer
console.log(buf.toString());
// Prints: buffer
// With buf.slice(), the original buffer is modified.
const notReallyCopiedBuf = buf.slice();
notReallyCopiedBuf[0]++;
console.log(notReallyCopiedBuf.toString());
// Prints: cuffer
console.log(buf.toString());
// Also prints: cuffer (!)
Возвращает новый Buffer, ссылающийся на ту же область памяти, что и исходный, но со смещением и усеченный по индексам start и end.
Если значение end больше buf.length, результат будет таким же, как при значении end, равном buf.length.
Этот метод унаследован от TypedArray.prototype.subarray().
Изменение нового среза Buffer изменит данные в исходном Buffer, поскольку выделенная память этих двух объектов пересекается.
import { Buffer } from 'node:buffer';
// Create a `Buffer` with the ASCII alphabet, take a slice, and modify one byte
// from the original `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;
}
const buf2 = buf1.subarray(0, 3);
console.log(buf2.toString('ascii', 0, buf2.length));
// Prints: abc
buf1[0] = 33;
console.log(buf2.toString('ascii', 0, buf2.length));
// Prints: !bc
Отрицательные индексы задают срез относительно конца buf, а не его начала.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('buffer');
console.log(buf.subarray(-6, -1).toString());
// Prints: buffe
// (Equivalent to buf.subarray(0, 5).)
console.log(buf.subarray(-6, -2).toString());
// Prints: buff
// (Equivalent to buf.subarray(0, 4).)
console.log(buf.subarray(-5, -2).toString());
// Prints: uff
// (Equivalent to buf.subarray(1, 4).)
переменная Buffer
интерфейс BufferConstructor
Использование в Deno
import { type BufferConstructor } from "node:buffer";
Методы
from(array: WithImplicitCoercion<ArrayLike<number>>): Buffer<ArrayBuffer> Выделяет новый Buffer, используя array байтов в диапазоне 0 – 255. Элементы массива за пределами этого диапазона будут усечены.
import { Buffer } from 'node:buffer';
// Creates a new Buffer containing the UTF-8 bytes of the string 'buffer'.
const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);
Если array — объект типа Array (то есть объект со свойством length типа number), он рассматривается как массив, если только это не Buffer или Uint8Array. Это означает, что все остальные варианты TypedArray рассматриваются как Array. Чтобы создать Buffer из байтов, на основе которых выделена память для TypedArray, используйте Buffer.copyBytesFrom().
Будет выброшено исключение TypeError, если array не является Array или другим типом, допустимым для вариантов Buffer.from().
Buffer.from(array) и Buffer.from(string) также могут использовать внутренний пул Buffer, как это делает Buffer.allocUnsafe().
from<TArrayBuffer extends WithImplicitCoercion<ArrayBufferLike>>(
arrayBuffer: TArrayBuffer,
byteOffset?: number,
length?: number,
): Buffer<ImplicitArrayBuffer<TArrayBuffer>> Создает представление ArrayBuffer без копирования базовой памяти. Например, если передать ссылку на свойство .buffer экземпляра TypedArray, новый Buffer будет использовать ту же выделенную память, что и базовый ArrayBuffer объекта TypedArray.
import { Buffer } from 'node:buffer';
const arr = new Uint16Array(2);
arr[0] = 5000;
arr[1] = 4000;
// Shares memory with `arr`.
const buf = Buffer.from(arr.buffer);
console.log(buf);
// Prints: <Buffer 88 13 a0 0f>
// Changing the original Uint16Array changes the Buffer also.
arr[1] = 6000;
console.log(buf);
// Prints: <Buffer 88 13 70 17>
Необязательные аргументы byteOffset и length задают диапазон памяти внутри arrayBuffer, который будет совместно использоваться Buffer.
import { Buffer } from 'node:buffer';
const ab = new ArrayBuffer(10);
const buf = Buffer.from(ab, 0, 2);
console.log(buf.length);
// Prints: 2
Будет выброшено исключение TypeError, если arrayBuffer не является ArrayBuffer, SharedArrayBuffer или другим типом, допустимым для вариантов Buffer.from().
Важно помнить, что базовый ArrayBuffer может охватывать диапазон памяти, выходящий за границы представления TypedArray. Новый Buffer, созданный с использованием свойства buffer объекта TypedArray, может выходить за пределы диапазона TypedArray:
import { Buffer } from 'node:buffer';
const arrA = Uint8Array.from([0x63, 0x64, 0x65, 0x66]); // 4 elements
const arrB = new Uint8Array(arrA.buffer, 1, 2); // 2 elements
console.log(arrA.buffer === arrB.buffer); // true
const buf = Buffer.from(arrB.buffer);
console.log(buf);
// Prints: <Buffer 63 64 65 66>
from(
string: WithImplicitCoercion<string>,
encoding?: BufferEncoding,
): Buffer<ArrayBuffer> Создает новый Buffer, содержащий string. Параметр encoding задает кодировку символов, которая будет использоваться при преобразовании string в байты.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from('this is a tést');
const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
console.log(buf1.toString());
// Prints: this is a tést
console.log(buf2.toString());
// Prints: this is a tést
console.log(buf1.toString('latin1'));
// Prints: this is a tést
Будет выброшено исключение TypeError, если string не является строкой или другим типом, допустимым для вариантов Buffer.from().
Buffer.from(string) также может использовать внутренний пул Buffer, как это делает Buffer.allocUnsafe().
Возвращает новый Buffer, полученный путем объединения всех экземпляров Buffer из list.
Если список пуст или totalLength равен 0, возвращается новый Buffer нулевой длины.
Если totalLength не указан, он вычисляется путем сложения длин экземпляров Buffer в list.
Если totalLength указан, он преобразуется в беззнаковое целое число. Если общая длина Buffer в list превышает totalLength, результат усекается до totalLength. Если общая длина Buffer в list меньше totalLength, оставшееся пространство заполняется нулями.
import { Buffer } from 'node:buffer';
// Create a single `Buffer` from a list of three `Buffer` instances.
const buf1 = Buffer.alloc(10);
const buf2 = Buffer.alloc(14);
const buf3 = Buffer.alloc(18);
const totalLength = buf1.length + buf2.length + buf3.length;
console.log(totalLength);
// Prints: 42
const bufA = Buffer.concat([buf1, buf2, buf3], totalLength);
console.log(bufA);
// Prints: <Buffer 00 00 00 00 ...>
console.log(bufA.length);
// Prints: 42
Buffer.concat() также может использовать внутренний пул Buffer, как это делает Buffer.allocUnsafe().
copyBytesFrom(
view: TypedArray,
offset?: number,
length?: number,
): Buffer<ArrayBuffer> Копирует базовую память view в новый Buffer.
const u16 = new Uint16Array([0, 0xffff]);
const buf = Buffer.copyBytesFrom(u16, 1, 1);
u16[1] = 0;
console.log(buf.length); // 2
console.log(buf[0]); // 255
console.log(buf[1]); // 255
Выделяет новый Buffer размером size байт. Если fill равен undefined, Buffer будет заполнен нулями.
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(5);
console.log(buf);
// Prints: <Buffer 00 00 00 00 00>
Если size больше constants.MAX_LENGTH или меньше 0, выбрасывается исключение ERR_OUT_OF_RANGE.
Если указан fill, выделенный Buffer будет инициализирован вызовом buf.fill(fill).
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(5, 'a');
console.log(buf);
// Prints: <Buffer 61 61 61 61 61>
Если указаны оба параметра — fill и encoding, выделенный Buffer будет инициализирован вызовом buf.fill(fill, encoding).
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
console.log(buf);
// Prints: <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
Вызов Buffer.alloc() может быть заметно медленнее альтернативы Buffer.allocUnsafe(), однако он гарантирует, что содержимое нового экземпляра Buffer никогда не будет содержать конфиденциальных данных из предыдущих выделений памяти, в том числе данных, которые могли быть выделены не для Buffer.
Будет выброшено исключение TypeError, если size не является числом.
allocUnsafe(size: number): Buffer<ArrayBuffer> Выделяет новый Buffer размером size байт. Если size больше constants.MAX_LENGTH или меньше 0, выбрасывается исключение ERR_OUT_OF_RANGE.
Базовая память для экземпляров Buffer, созданных таким способом, не инициализируется. Содержимое нового Buffer неизвестно и может содержать конфиденциальные данные. Вместо этого используйте Buffer.alloc(), чтобы инициализировать экземпляры Buffer нулями.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(10);
console.log(buf);
// Prints (contents may vary): <Buffer a0 8b 28 3f 01 00 00 00 50 32>
buf.fill(0);
console.log(buf);
// Prints: <Buffer 00 00 00 00 00 00 00 00 00 00>
Будет выброшено исключение TypeError, если size не является числом.
Модуль Buffer предварительно выделяет внутренний экземпляр Buffer размером Buffer.poolSize, который используется в качестве пула для быстрого выделения новых экземпляров Buffer, созданных с помощью только Buffer.allocUnsafe(), Buffer.from(array) и Buffer.concat(), и только если size меньше Buffer.poolSize >>> 1 (целой части от Buffer.poolSize, деленного на два).
Использование этого предварительно выделенного внутреннего пула памяти — ключевое отличие вызова Buffer.alloc(size, fill) от Buffer.allocUnsafe(size).fill(fill). В частности, Buffer.alloc(size, fill) никогда не использует внутренний пул Buffer, тогда как Buffer.allocUnsafe(size).fill(fill) использует внутренний пул Buffer, если size меньше или равно половине Buffer.poolSize. Это различие может показаться незначительным, но оно важно, если приложению требуется дополнительная производительность, которую обеспечивает Buffer.allocUnsafe().
allocUnsafeSlow(size: number): Buffer<ArrayBuffer> Выделяет новый Buffer размером size байт. Если size больше constants.MAX_LENGTH или меньше 0, выбрасывается исключение ERR_OUT_OF_RANGE. Если size равен 0, создается Buffer нулевой длины.
Базовая память для экземпляров Buffer, созданных таким способом, не инициализируется. Содержимое нового Buffer неизвестно и может содержать конфиденциальные данные. Используйте buf.fill(0), чтобы инициализировать такие экземпляры Buffer нулями.
При использовании Buffer.allocUnsafe() для выделения новых экземпляров Buffer, блоки размером менее 4 КиБ выделяются из единственного предварительно выделенного Buffer. Это позволяет приложениям избежать затрат на сборку мусора, возникающих при создании множества отдельно выделенных экземпляров Buffer. Такой подход повышает производительность и снижает потребление памяти, поскольку отпадает необходимость отслеживать и очищать множество отдельных объектов ArrayBuffer.
Однако если разработчику нужно сохранить небольшой фрагмент памяти из пула на неопределенное время, может быть целесообразно создать экземпляр Buffer вне пула с помощью Buffer.allocUnsafeSlow(), а затем скопировать нужные данные.
import { Buffer } from 'node:buffer';
// Need to keep around a few small chunks of memory.
const store = [];
socket.on('readable', () => {
let data;
while (null !== (data = readable.read())) {
// Allocate for retained data.
const sb = Buffer.allocUnsafeSlow(10);
// Copy the data into the new allocation.
data.copy(sb, 0, 0, 10);
store.push(sb);
}
});
Будет выброшено исключение TypeError, если size не является числом.
Необработанные данные хранятся в экземплярах класса Buffer. Buffer похож на массив целых чисел, но соответствует выделению памяти вне кучи V8. Размер Buffer нельзя изменить. Допустимые кодировки строк: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'base64url'|'binary'(deprecated)|'hex'
Свойства
poolSize: number Это размер (в байтах) предварительно выделенных внутренних экземпляров Buffer, используемых для пула. Это значение можно изменить.
Методы
Возвращает true, если obj является Buffer, и false в противном случае.
import { Buffer } from 'node:buffer';
Buffer.isBuffer(Buffer.alloc(10)); // true
Buffer.isBuffer(Buffer.from('foo')); // true
Buffer.isBuffer('a string'); // false
Buffer.isBuffer([]); // false
Buffer.isBuffer(new Uint8Array(1024)); // false
isEncoding(encoding: string): encoding is BufferEncoding Возвращает true, если encoding — название поддерживаемой кодировки символов, и false в противном случае.
import { Buffer } from 'node:buffer';
console.log(Buffer.isEncoding('utf8'));
// Prints: true
console.log(Buffer.isEncoding('hex'));
// Prints: true
console.log(Buffer.isEncoding('utf/8'));
// Prints: false
console.log(Buffer.isEncoding(''));
// Prints: false
byteLength(
string: ,
encoding?: BufferEncoding,
): number Возвращает длину строки в байтах при кодировании с помощью encoding. Это не то же самое, что String.prototype.length, которое не учитывает кодировку, используемую для преобразования строки в байты.
Для 'base64', 'base64url' и 'hex' эта функция предполагает, что входные данные корректны. Для строк, содержащих данные, не закодированные в base64/hex (например, пробелы), возвращаемое значение может быть больше длины Buffer, созданного из строки.
import { Buffer } from 'node:buffer';
const str = '\u00bd + \u00bc = \u00be';
console.log(`${str}: ${str.length} characters, ` +
`${Buffer.byteLength(str, 'utf8')} bytes`);
// Prints: ½ + ¼ = ¾: 9 characters, 12 bytes
Если string — это Buffer/DataView/[TypedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/- Reference/Global_Objects/TypedArray)/ArrayBuffer/[SharedArrayBuffer](https://develop- er.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer), возвращается длина в байтах, указанная методом .byteLength.
compare(
buf1: Uint8Array,
buf2: Uint8Array,
):
-1
| 0
| 1
Сравнивает buf1 с buf2, обычно для сортировки массивов экземпляров Buffer. Это эквивалентно вызову buf1.compare(buf2).
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from('1234');
const buf2 = Buffer.from('0123');
const arr = [buf1, buf2];
console.log(arr.sort(Buffer.compare));
// Prints: [ <Buffer 30 31 32 33>, <Buffer 31 32 33 34> ]
// (This result is equal to: [buf2, buf1].)
Методы
from(array: WithImplicitCoercion<ArrayLike<number>>): Buffer Выделяет новый Buffer, используя array байтов в диапазоне 0 – 255. Элементы массива за пределами этого диапазона будут усечены.
import { Buffer } from 'node:buffer';
// Creates a new Buffer containing the UTF-8 bytes of the string 'buffer'.
const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);
Если array — объект типа Array (то есть объект со свойством length типа number), он рассматривается как массив, если только это не Buffer или Uint8Array. Это означает, что все остальные варианты TypedArray рассматриваются как Array. Чтобы создать Buffer из байтов, на основе которых выделена память для TypedArray, используйте Buffer.copyBytesFrom().
Будет выброшено исключение TypeError, если array не является Array или другим типом, допустимым для вариантов Buffer.from().
Buffer.from(array) и Buffer.from(string) также могут использовать внутренний пул Buffer, как это делает Buffer.allocUnsafe().
from(
arrayBuffer: WithImplicitCoercion<ArrayBuffer | SharedArrayBuffer>,
byteOffset?: number,
length?: number,
): Buffer Создает представление ArrayBuffer без копирования базовой памяти. Например, если передать ссылку на свойство .buffer экземпляра TypedArray, новый Buffer будет использовать ту же выделенную память, что и базовый ArrayBuffer объекта TypedArray.
import { Buffer } from 'node:buffer';
const arr = new Uint16Array(2);
arr[0] = 5000;
arr[1] = 4000;
// Shares memory with `arr`.
const buf = Buffer.from(arr.buffer);
console.log(buf);
// Prints: <Buffer 88 13 a0 0f>
// Changing the original Uint16Array changes the Buffer also.
arr[1] = 6000;
console.log(buf);
// Prints: <Buffer 88 13 70 17>
Необязательные аргументы byteOffset и length задают диапазон памяти внутри arrayBuffer, который будет совместно использоваться Buffer.
import { Buffer } from 'node:buffer';
const ab = new ArrayBuffer(10);
const buf = Buffer.from(ab, 0, 2);
console.log(buf.length);
// Prints: 2
Будет выброшено исключение TypeError, если arrayBuffer не является ArrayBuffer, SharedArrayBuffer или другим типом, допустимым для вариантов Buffer.from().
Важно помнить, что базовый ArrayBuffer может охватывать диапазон памяти, выходящий за границы представления TypedArray. Новый Buffer, созданный с использованием свойства buffer объекта TypedArray, может выходить за пределы диапазона TypedArray:
import { Buffer } from 'node:buffer';
const arrA = Uint8Array.from([0x63, 0x64, 0x65, 0x66]); // 4 elements
const arrB = new Uint8Array(arrA.buffer, 1, 2); // 2 elements
console.log(arrA.buffer === arrB.buffer); // true
const buf = Buffer.from(arrB.buffer);
console.log(buf);
// Prints: <Buffer 63 64 65 66>
from(
string: WithImplicitCoercion<string>,
encoding?: BufferEncoding,
): Buffer Создает новый Buffer, содержащий string. Параметр encoding задает кодировку символов, которая будет использоваться при преобразовании string в байты.
import { Buffer } from 'node:buffer';
const buf1 = Buffer.from('this is a tést');
const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
console.log(buf1.toString());
// Prints: this is a tést
console.log(buf2.toString());
// Prints: this is a tést
console.log(buf1.toString('latin1'));
// Prints: this is a tést
Будет выброшено исключение TypeError, если string не является строкой или другим типом, допустимым для вариантов Buffer.from().
Buffer.from(string) также может использовать внутренний пул Buffer, как это делает Buffer.allocUnsafe().
Возвращает новый Buffer, полученный путем объединения всех экземпляров Buffer из list.
Если список пуст или totalLength равен 0, возвращается новый Buffer нулевой длины.
Если totalLength не указан, он вычисляется путем сложения длин экземпляров Buffer в list.
Если totalLength указан, он преобразуется в беззнаковое целое число. Если общая длина Buffer в list превышает totalLength, результат усекается до totalLength.
import { Buffer } from 'node:buffer';
// Create a single `Buffer` from a list of three `Buffer` instances.
const buf1 = Buffer.alloc(10);
const buf2 = Buffer.alloc(14);
const buf3 = Buffer.alloc(18);
const totalLength = buf1.length + buf2.length + buf3.length;
console.log(totalLength);
// Prints: 42
const bufA = Buffer.concat([buf1, buf2, buf3], totalLength);
console.log(bufA);
// Prints: <Buffer 00 00 00 00 ...>
console.log(bufA.length);
// Prints: 42
Buffer.concat() также может использовать внутренний пул Buffer, как это делает Buffer.allocUnsafe().
copyBytesFrom(
view: TypedArray,
offset?: number,
length?: number,
): Buffer Копирует базовую память view в новый Buffer.
const u16 = new Uint16Array([0, 0xffff]);
const buf = Buffer.copyBytesFrom(u16, 1, 1);
u16[1] = 0;
console.log(buf.length); // 2
console.log(buf[0]); // 255
console.log(buf[1]); // 255
Выделяет новый Buffer размером size байт. Если fill равен undefined, Buffer будет заполнен нулями.
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(5);
console.log(buf);
// Prints: <Buffer 00 00 00 00 00>
Если size больше constants.MAX_LENGTH или меньше 0, выбрасывается исключение ERR_OUT_OF_RANGE.
Если указан fill, выделенный Buffer будет инициализирован вызовом buf.fill(fill).
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(5, 'a');
console.log(buf);
// Prints: <Buffer 61 61 61 61 61>
Если указаны оба параметра — fill и encoding, выделенный Buffer будет инициализирован вызовом buf.fill(fill, encoding).
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
console.log(buf);
// Prints: <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
Вызов Buffer.alloc() может быть заметно медленнее альтернативы Buffer.allocUnsafe(), однако он гарантирует, что содержимое нового экземпляра Buffer никогда не будет содержать конфиденциальных данных из предыдущих выделений памяти, в том числе данных, которые могли быть выделены не для Buffer.
Будет выброшено исключение TypeError, если size не является числом.
allocUnsafe(size: number): Buffer Выделяет новый Buffer размером size байт. Если size больше constants.MAX_LENGTH или меньше 0, выбрасывается исключение ERR_OUT_OF_RANGE.
Базовая память для экземпляров Buffer, созданных таким способом, не инициализируется. Содержимое нового Buffer неизвестно и может содержать конфиденциальные данные. Вместо этого используйте Buffer.alloc(), чтобы инициализировать экземпляры Buffer нулями.
import { Buffer } from 'node:buffer';
const buf = Buffer.allocUnsafe(10);
console.log(buf);
// Prints (contents may vary): <Buffer a0 8b 28 3f 01 00 00 00 50 32>
buf.fill(0);
console.log(buf);
// Prints: <Buffer 00 00 00 00 00 00 00 00 00 00>
Будет выброшено исключение TypeError, если size не является числом.
Модуль Buffer предварительно выделяет внутренний экземпляр Buffer размером Buffer.poolSize, который используется в качестве пула для быстрого выделения новых экземпляров Buffer, созданных с помощью только Buffer.allocUnsafe(), Buffer.from(array) и Buffer.concat(), и только если size меньше Buffer.poolSize >>> 1 (целой части от Buffer.poolSize, деленного на два).
Использование этого предварительно выделенного внутреннего пула памяти — ключевое отличие вызова Buffer.alloc(size, fill) от Buffer.allocUnsafe(size).fill(fill). В частности, Buffer.alloc(size, fill) никогда не использует внутренний пул Buffer, тогда как Buffer.allocUnsafe(size).fill(fill) использует внутренний пул Buffer, если size меньше или равно половине Buffer.poolSize. Это различие может показаться незначительным, но оно важно, если приложению требуется дополнительная производительность, которую обеспечивает Buffer.allocUnsafe().
allocUnsafeSlow(size: number): Buffer Выделяет новый Buffer размером size байт. Если size больше constants.MAX_LENGTH или меньше 0, выбрасывается исключение ERR_OUT_OF_RANGE. Если size равен 0, создается Buffer нулевой длины.
Базовая память для экземпляров Buffer, созданных таким способом, не инициализируется. Содержимое нового Buffer неизвестно и может содержать конфиденциальные данные. Используйте buf.fill(0), чтобы инициализировать такие экземпляры Buffer нулями.
При использовании Buffer.allocUnsafe() для выделения новых экземпляров Buffer, блоки размером менее 4 КиБ выделяются из единственного предварительно выделенного Buffer. Это позволяет приложениям избежать затрат на сборку мусора, возникающих при создании множества отдельно выделенных экземпляров Buffer. Такой подход повышает производительность и снижает потребление памяти, поскольку отпадает необходимость отслеживать и очищать множество отдельных объектов ArrayBuffer.
Однако если разработчику нужно сохранить небольшой фрагмент памяти из пула на неопределенное время, может быть целесообразно создать экземпляр Buffer вне пула с помощью Buffer.allocUnsafeSlow(), а затем скопировать нужные данные.
import { Buffer } from 'node:buffer';
// Need to keep around a few small chunks of memory.
const store = [];
socket.on('readable', () => {
let data;
while (null !== (data = readable.read())) {
// Allocate for retained data.
const sb = Buffer.allocUnsafeSlow(10);
// Copy the data into the new allocation.
data.copy(sb, 0, 0, 10);
store.push(sb);
}
});
Будет выброшено исключение TypeError, если size не является числом.
интерфейс FileOptions
Использование в Deno
import { type FileOptions } from "node:buffer";
Свойства
endings: "native" | "transparent" Одно из значений: 'transparent' или 'native'. Если задано значение 'native', окончания строк в строковых исходных данных будут преобразованы в системный формат окончаний строк, указанный в import { EOL } from 'node:os'.
type: string Тип содержимого файла.
lastModified: number Дата последнего изменения файла. Default: Date.now().
псевдоним типа BufferEncoding
Использование в Deno
import { type BufferEncoding } from "node:buffer";
Определение
"ascii"
| "utf8"
| "utf-8"
| "utf16le"
| "utf-16le"
| "ucs2"
| "ucs-2"
| "base64"
| "base64url"
| "latin1"
| "binary"
| "hex"
псевдоним типа ImplicitArrayBuffer
Использование в Deno
import { type ImplicitArrayBuffer } from "node:buffer";
Объекты Buffer используются для представления последовательности байтов фиксированной длины. Многие API Node.js поддерживают Buffer.
Класс Buffer является подклассом класса JavaScript Uint8Array и расширяет его методами для дополнительных вариантов использования. API Node.js также принимают обычные Uint8Array везде, где поддерживаются Buffer.
Хотя класс Buffer доступен в глобальной области видимости, рекомендуется явно ссылаться на него с помощью инструкции import или require.
import { Buffer } from 'node:buffer';
// Creates a zero-filled Buffer of length 10.
const buf1 = Buffer.alloc(10);
// Creates a Buffer of length 10,
// filled with bytes which all have the value `1`.
const buf2 = Buffer.alloc(10, 1);
// Creates an uninitialized buffer of length 10.
// This is faster than calling Buffer.alloc() but the returned
// Buffer instance might contain old data that needs to be
// overwritten using fill(), write(), or other functions that fill the Buffer's
// contents.
const buf3 = Buffer.allocUnsafe(10);
// Creates a Buffer containing the bytes [1, 2, 3].
const buf4 = Buffer.from([1, 2, 3]);
// Creates a Buffer containing the bytes [1, 1, 1, 1] – the entries
// are all truncated using `(value & 255)` to fit into the range 0–255.
const buf5 = Buffer.from([257, 257.5, -255, '1']);
// Creates a Buffer containing the UTF-8-encoded bytes for the string 'tést':
// [0x74, 0xc3, 0xa9, 0x73, 0x74] (in hexadecimal notation)
// [116, 195, 169, 115, 116] (in decimal notation)
const buf6 = Buffer.from('tést');
// Creates a Buffer containing the Latin-1 bytes [0x74, 0xe9, 0x73, 0x74].
const buf7 = Buffer.from('tést', 'latin1');
Параметры типа
T extends WithImplicitCoercion<ArrayBufferLike> Определение
См. также
псевдоним типа TranscodeEncoding
Использование в Deno
import { type TranscodeEncoding } from "node:buffer";
Определение
"ascii"
| "utf8"
| "utf-8"
| "utf16le"
| "utf-16le"
| "ucs2"
| "ucs-2"
| "latin1"
| "binary"
псевдоним типа WithImplicitCoercion
Использование в Deno
import { type WithImplicitCoercion } from "node:buffer";
переменная constants
Использование в Deno
import { constants } from "node:buffer";
Свойства
MAX_LENGTH: number MAX_STRING_LENGTH: number переменная INSPECT_MAX_BYTES
Использование в Deno
import { INSPECT_MAX_BYTES } from "node:buffer";
Тип
number переменная kStringMaxLength
Использование в Deno
import { kStringMaxLength } from "node:buffer";
Тип
number переменная SlowBuffer
Использование в Deno
import { SlowBuffer } from "node:buffer";
Вместо этого используйте Buffer.allocUnsafeSlow().
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/buffer