Domina el manejo de datos binarios en Node.js con buffers: aprende a crearlos desde un string, reservar memoria con Buffer.alloc, escribir con write y convertir a texto con toString usando UTF-8 y rangos de índices. Ideal para flujos de entrada y salida donde necesitas transformar y leer información de forma precisa.
¿Qué es un buffer en Node.js y para qué sirve?
Un buffer es una estructura que permite trabajar con datos binarios y transformarlos a distintos formatos, como cadenas de texto. En Node.js, la clase Buffer facilita crear, escribir y leer estos datos, algo clave en I/O. Aquí verás cómo partir desde un archivo buffers.js, crear un buffer, modificarlo y extraer información con control de índices.
Crea el archivo buffers.js en tu editor de código.
Opcional para orden: importa la clase con require('buffer').
Ejecuta cada paso con la opción run code del editor.
¿Cómo crear, escribir y leer buffers en JavaScript?
A continuación se muestra el flujo completo: crear desde un string, reservar memoria fija, escribir datos y convertir a texto con UTF-8.
¿Cómo crear un buffer desde un string con UTF-8?
Usa Buffer.from para convertir un string a buffer con un encoder específico.
// Opcional, para mantener orden en el llamado de la clase Bufferconst{Buffer}=require('buffer');const bufferFromString =Buffer.from('hello world','utf-8');console.log(bufferFromString);
Buffer.from crea un buffer a partir del string 'hello world'.
Se usa el encoderUTF-8 para la representación del texto.
Al imprimir, verás la representación binaria lista para transformaciones.
¿Cómo reservar memoria con Buffer.alloc y escribir datos?
Buffer.alloc crea un buffer de tamaño fijo (en bytes). Luego, write permite escribir un string dentro de ese espacio.
const bufferAlloc =Buffer.alloc(10);// 10 bytesconsole.log(bufferAlloc);// buffer vacío con 10 bytes asignadosbufferAlloc.write('node js');console.log(bufferAlloc);// muestra el contenido escrito y el resto del espacio
Se reservan 10 bytes; el buffer mantiene siempre ese tamaño.
write('node js') escribe el contenido dentro del espacio disponible.
El resto del contenido permanece en el buffer porque la memoria está asignada.
¿Cómo convertir un buffer a string con índices y encoding?
toString devuelve una cadena desde el buffer usando el encoder y rangos de lectura: índice inicial y final.
const bufferToString = bufferAlloc.toString('utf-8',0,6);console.log(bufferToString);// "node j"// Para leer todo el contenido disponible con el mismo encoder:console.log(bufferAlloc.toString('utf-8'));
Usa UTF-8 y controla los índices: inicio 0 y fin 6.
Cambia los rangos para extraer subcadenas, por ejemplo, del 4 al 7.
Si omites el índice final, lees todo el contenido del buffer.
Además de los pasos anteriores, aquí se integran las habilidades y conceptos que practicarás:
Creación de buffers con Buffer.from y encoderUTF-8.
Reserva de memoria con Buffer.alloc y manejo de bytes fijos.
Escritura con write y persistencia del tamaño del buffer.
Conversión a texto con toString usando índices de lectura.
Flujo de trabajo repetible: crear, escribir, leer y ajustar rangos.
¿Te animas a llevarlo a un proyecto práctico con buffers? Comparte tu avance en comentarios y, cuando lo tengas, envía tu pull request con la solución.
También podemos ver el string del buffer en hexadecimal y base64:
console.log(buffer.toString('hex'));
console.log(buffer.toString('base64'));
// no es necesario la importación const buffer =require('buffer');const bufferFromString =Buffer.from('Hello World','utf8');console.log(bufferFromString);// crear un buffer de un tamaño especificoconst bufferAlloc =Buffer.alloc(10);console.log(bufferAlloc);// Escribir datos dentro de un bloquebufferAlloc.write('node.js');console.log(bufferAlloc);// Leer los datos de buffer y convertirlo en cadenaconst buffertoString = bufferAlloc.toString('utf8',3,6);console.log(buffertoString);