Node.js中的Buffer

張優秀發表於2019-02-16

Buffer介紹

為什麼要用Buffer?

  1. 在Node/ES6 出現之前,前端工程師只需要進行一些簡單的額字串或者ODM操作就可以滿足業務需求了,所有對二進位制資料比較陌生。
  2. 在node出現之後,前端工程師面對的技術場景傳送了變化,可以深入到網路傳輸、檔案操作、圖片處理等領域。而這些操作與二進位制資料緊密相關。
  3. 在Node中的Buffer,是一個二進位制資料容器,資料結構和陣列類似,專門用於Node中的資料放。

新建Buffer

Buffer.alloc(size[, fil[,encoding]])
size :新建的buffer期望的長度
fill 用來預填充新建的Buffer的值 預設0
encoding : 編碼格式 預設:utf-8

/*
        十六進位制:00- ff
        十進位制 :0- 255
        二進位制: 00000000- 11111111
        0 / 1 代表一位 == 位元 
        8bit = 1B
        1kb = 1024 B
        1mkb= 1024Kb
        1GB = 1024m
        1TB = 1024GB

*/

// 2. Buffer.alloc(size[, fill[, encoding]])
/*
類陣列使用即可 可遍歷 可選擇下標等等
初始化: 確定的長度 不能改變
填充值

*/
let buffer2= Buffer.alloc(10);//建立了一個長度是10的buffer
buffer2[0]= 10;//可以像使用陣列一樣使用buffer 
buffer2[1]= oxfc;//傳一個十六進位制的直接取後兩位 fc
buffer2[30]= 1;//這點和陣列不同 溢位隱藏 
console.log(buffer2);

Buffer使用

使用新方法使用Buffer

  1. Buffer.form(str):將一個字串轉換成buffer
  2. Buffer.alloc(size):建立一個指定大小的buffer
  3. Buffer.alloUnsafe(size):建立一個指定大小的buffer,但是可能包含敏感資料。
// 歷史方法
// let buffer = new Buffer(10);//類似 Array(10) 建立十個空間
// console.log(buffer)// <Buffer 00 00 00 00 00 00 00 00 00 00>

//1. 字串轉成二進位制
let str= `www.zhangningle.top`;
let buffer= Buffer.from(str);
console.log(buffer);//<Buffer 77 77 77 2e 7a 68 61 6e 67 6e 69 6e 67 6c 65 2e 74 6f 70>
//把buffer轉成十進位制的
console.log(buffer.toString())//www.zhangningle.top
// 漢字轉換成二進位制後 一個漢字要用三個位元組表示

Buffer總結點:

  1. Buffer的結構和陣列很像,操作方法也和陣列很類似。
  2. Buffer中是以二進位制的方式儲存資料的
  3. Buffer是Node自帶的,不需要引入,直接可以使用。

相關文章