Ce sunt tampoanele?

Binar este pur și simplu un set sau o colecție de 1 și 0. Fiecare număr dintr-un binar, fiecare 1 și 0 dintr-un set se numesc a pic. Computerul convertește datele în acest format binar pentru a stoca și a efectua operațiuni. De exemplu, următoarele sunt cinci binare diferite:

10, 01, 001, 1110, 00101011

JavaScript nu are date de tip octet în API-ul său principal. Pentru a gestiona datele binare, Node.js include o implementare tampon binar cu un modul global numit Buffer.

Crearea unui buffer

Există diferite moduri în care puteți crea un buffer în Node.js. Puteți crea un tampon gol cu ​​o dimensiune de 10 octeți.

const buf1 = Buffer.alloc(10);

Din șiruri codate UTF-8, creația este astfel:

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

Există diferite coduri acceptate la crearea unui buffer:

  • ascii
  • utf-8
  • baza64:
  • latin1
  • binar
  • hex

Există trei funcții separate alocate în Buffer API pentru a utiliza și a crea noi buffere. În exemplele de mai sus am văzut alloc() și from(). Al treilea este allocUnsafe().

const buf3 = Buffer.allocUnsafe(10);

Când este returnată, această funcție poate conține date vechi care trebuie suprascrise.

Interacțiuni cu Buffer

Există diferite interacțiuni care pot fi făcute cu Buffer API. O să le acoperim pe cele mai multe dintre ele aici. Să începem cu convertirea unui buffer în JSON.

let bufferOne = Buffer.from('This is a buffer example.');
console.log(bufferOne);

// Output: <Buffer 54 68 69 73 20 69 73 20 61 20 62 75 66 66 65 72 20 65 78 61 6d 70 6c 65 2e>

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]}

JSON specifică faptul că tipul de obiect care se transformă este un buffer și datele sale. Conversia unui buffer gol în JSON ne va arăta că nu conține altceva decât zerouri.

const emptyBuf = Buffer.alloc(10);

emptyBuf.toJSON();

// Output: { "type": "Buffer", "data": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }

Rețineți că, Buffer API oferă, de asemenea, o funcție directă toJSON() pentru a converti un buffer într-un obiect JSON. Pentru a examina dimensiunea unui tampon, putem folosi length metodă.

emptyBuf.length;
// Output: 10

Acum, să transformăm bufferul într-un șir lizibil, în cazul nostru, codul utf-8.

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

// Output: This is a buffer example.

.toString() implicit convertește un buffer într-un șir de format utf-8. Așa decodezi un buffer. Dacă specificați o codificare, puteți converti bufferul în altă codare

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

Mai multe informații despre tampoane:

  • Aveți nevoie de o mai bună înțelegere a bufferelor din Node.js? Verificați acest lucru.