Explicación del búfer de Node.js

¿Qué son los búferes?

Binary es simplemente un conjunto o una colección de 1y 0. Cada número de un binario, cada 1 y 0 de un conjunto se denominan bit . La computadora convierte los datos a este formato binario para almacenar y realizar operaciones. Por ejemplo, los siguientes son cinco binarios diferentes:

10, 01, 001, 1110, 00101011

JavaScript no tiene datos de tipo byte en su API principal. Para manejar datos binarios, Node.js incluye una implementación de búfer binario con un módulo global llamado Buffer.

Crear un búfer

Hay diferentes formas de crear un búfer en Node.js. Puede crear un búfer vacío con un tamaño de 10 bytes.

const buf1 = Buffer.alloc(10);

A partir de cadenas codificadas en UTF-8, la creación es así:

const buf2 = Buffer.from('Hello World!');

Hay diferentes codificaciones aceptadas al crear un búfer:

  • ascii
  • utf-8
  • base64:
  • latin1
  • binario
  • maleficio

Hay tres funciones separadas asignadas en la API de búfer para usar y crear nuevos búferes. En los ejemplos anteriores hemos visto alloc()y from(). El tercero es allocUnsafe().

const buf3 = Buffer.allocUnsafe(10);

Cuando se devuelve, esta función puede contener datos antiguos que deben sobrescribirse.

Interacciones con Buffer

Hay diferentes interacciones que se pueden realizar con la API de búfer. Vamos a cubrir la mayoría de ellos aquí. Comencemos por convertir un búfer a JSON.

let bufferOne = Buffer.from('This is a buffer example.'); console.log(bufferOne); // Output:  let json = JSON.stringify(bufferOne); console.log(json); // Output: {"type": "Buffer", "data": [84,104,105,115,32,105,115,32,97,32,98,117,102,102,101,114,32,101,120,97,109,112,108,101,46]}

El JSON especifica que el tipo de objeto que se está transformando es un búfer y sus datos. La conversión de un búfer vacío a JSON nos mostrará que no contiene nada más que ceros.

const emptyBuf = Buffer.alloc(10); emptyBuf.toJSON(); // Output: { "type": "Buffer", "data": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }

Tenga en cuenta que la API de búfer también proporciona una función directa toJSON()para convertir un búfer en un objeto JSON. Para examinar el tamaño de un búfer, podemos usar el lengthmétodo.

emptyBuf.length; // Output: 10

Ahora convierta el búfer en una cadena legible, en nuestro caso, la codificación utf-8.

console.log(bufferOne.toString('utf8')); // Output: This is a buffer example.

.toString()de forma predeterminada, convierte un búfer en una cadena de formato utf-8. Así es como se decodifica un búfer. Si especifica una codificación, puede convertir el búfer a otra codificación

console.log(bufferOne.toString('base64'));

Más información sobre búferes:

  • ¿Necesita una mejor comprensión de los búferes en Node.js? Mira esto.