Noções Básicas de Buffers
7 exemplos para você começar com Buffers - 5 básicos e 2 intermediários.
Busque em todas as páginas da documentação
7 exemplos para você começar com Buffers - 5 básicos e 2 intermediários.
Buffer é global; também disponível via node:buffer.Crie armazenamento binário de tamanho fixo com codificação conhecida antecipadamente.
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(8); // preenchido com zeros
buf.write('hello', 0, 'utf8');
console.log(buf.toString('utf8')); // hello com preenchimento nuloBuffer.alloc(n) preenche com zeros - seguro para criptografia e segredos.Buffer.allocUnsafe(n) é mais rápido, mas pode conter memória antiga - sobrescreva completamente antes de usar.Buffer.byteLength(str, 'utf8') dimensiona UTF-8 sem alocar.Relacionado: Segurança de Buffer - preenchimento com zero e vazamentos
Codifique texto em bytes com uma codificação explícita.
const text = 'Node.js 24';
const buf = Buffer.from(text, 'utf8');
console.log(buf.length, Buffer.byteLength(text, 'utf8'));utf8 - especifique explicitamente em código sensível à segurança.TypeError em conversões estritas.buf.toString('hex') despeja bytes para depuração de protocolos.Relacionado: Codificações de Texto - UTF-8 e entrada malformada
slice retorna uma visualização que compartilha a mesma memória subjacente.
const original = Buffer.from('abcdef', 'utf8');
const slice = original.subarray(2, 5); // 'cde'
slice[0] = 67; // 0x43 'C'
console.log(original.toString()); // abCdefsubarray é o alias moderno - mesmo comportamento que slice para Buffers.Buffer.from(slice) quando o isolamento for necessário.Igualdade binária e junção de blocos de leituras de rede.
const a = Buffer.from('abc');
const b = Buffer.from('abc');
console.log(a.equals(b)); // true
const combined = Buffer.concat([Buffer.from('hel'), Buffer.from('lo')]);equals é seguro em termos de tempo o suficiente para buffers de comprimento correspondente - use crypto.timingSafeEqual para segredos.Buffer.concat(list, totalLength) pré-dimensiona quando você sabe o comprimento final para evitar realocação.concat massivo em loops - use uma lista e depois um concat ou um stream.Adequado para configurações e chaves; use streams para ativos grandes.
import { readFile } from 'node:fs/promises';
const buf = await readFile('logo.png');
console.log(buf.length, buf[0], buf[1]); // bytes mágicos PNGbuf.subarray(0, 8) inspeciona números mágicos para detecção de tipo.Relacionado: fs e fs/promises - E/S de arquivo assíncrona
APIs da Web e corpos fetch usam Uint8Array - Buffers são subclasses de Uint8Array.
const buf = Buffer.from([1, 2, 3]);
const view: Uint8Array = buf;
console.log(view instanceof Uint8Array); // true
const copy = Buffer.from(view); // copia quando o isolamento é necessárioArrayBuffer de WASM ou Web Crypto interoperam via .buffer, .byteOffset, .byteLength.Buffer.from(arrayBuffer, byteOffset, length) cria um Buffer com base em visualização.Padrão comum de framing binário para protocolos TCP.
function encodeFrame(payload: Buffer): Buffer {
const header = Buffer.alloc(4);
header.writeUInt32BE(payload.length);
return Buffer.concat([header, payload]);
}
function decodeFrame(data: Buffer): { frame: Buffer; rest: Buffer } {
const len = data.readUInt32BE(0);
return { frame: data.subarray(4, 4 + len), rest: data.subarray(4 + len) };
}BE) por convenção.Relacionado: Noções Básicas de Streams - tratamento de payloads grandes
Versões da Stack: Esta página foi escrita para Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5, e NestJS 11.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026