Conceptos Básicos de Buffers
7 ejemplos para empezar a usar Buffers: 5 básicos y 2 intermedios.
Busca en todas las páginas de la documentación
7 ejemplos para empezar a usar Buffers: 5 básicos y 2 intermedios.
Buffer es global; también disponible a través de node:buffer.Crea almacenamiento binario de tamaño fijo con codificación conocida de antemano.
import { Buffer } from 'node:buffer';
const buf = Buffer.alloc(8); // rellenado con ceros
buf.write('hello', 0, 'utf8');
console.log(buf.toString('utf8')); // hello con relleno nuloBuffer.alloc(n) rellena con ceros - seguro para criptografía y secretos.Buffer.allocUnsafe(n) es más rápido pero puede contener memoria antigua - sobrescribe completamente antes de usar.Buffer.byteLength(str, 'utf8') dimensiona UTF-8 sin asignar.Relacionado: Seguridad de Buffer - relleno con ceros y fugas
Codifica texto en bytes con una codificación explícita.
const text = 'Node.js 24';
const buf = Buffer.from(text, 'utf8');
console.log(buf.length, Buffer.byteLength(text, 'utf8'));utf8 - especifícala explícitamente en código sensible a la seguridad.TypeError en conversiones estrictas.buf.toString('hex') vuelca bytes para depurar protocolos.Relacionado: Codificaciones de Texto - UTF-8 y entrada malformada
slice devuelve una vista que comparte la misma memoria subyacente.
const original = Buffer.from('abcdef', 'utf8');
const slice = original.subarray(2, 5); // 'cde'
slice[0] = 67; // 0x43 'C'
console.log(original.toString()); // abCdefsubarray es el alias moderno - mismo comportamiento que slice para Buffers.Buffer.from(slice) cuando necesites aislar.Igualdad binaria y unión de fragmentos de lecturas de red.
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 es lo suficientemente seguro en cuanto a tiempo para buffers de longitud coincidente - usa crypto.timingSafeEqual para secretos.Buffer.concat(list, totalLength) pre-dimensiona cuando conoces la longitud final para evitar reasignaciones.concat masivos en bucles - usa una lista y luego una concatenación o un stream.Está bien para configuraciones y claves; usa streams para activos 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) inspecciona números mágicos para la detección de tipos.Relacionado: fs y fs/promises - E/S de archivos asíncrona
Las APIs web y los cuerpos de fetch usan Uint8Array - los Buffers son subclases 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 cuando se necesita aislamientoArrayBuffer de WASM o Web Crypto interoperan a través de .buffer, .byteOffset, .byteLength.Buffer.from(arrayBuffer, byteOffset, length) crea un Buffer respaldado por una vista.Patrón común de enmarcado binario 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 convención.Relacionado: Conceptos Básicos de Streams - manejo de cargas grandes
Versiones de la pila: Esta página fue escrita para Node.js 24.18.0 (LTS Activo), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 y NestJS 11.
Revisado por Chris St. John·Última actualización: 19 jul 2026