Buffer介紹
為什麼要用Buffer?
- 在Node/ES6 出現之前,前端工程師只需要進行一些簡單的額字串或者ODM操作就可以滿足業務需求了,所有對二進位制資料比較陌生。
- 在node出現之後,前端工程師面對的技術場景傳送了變化,可以深入到網路傳輸、檔案操作、圖片處理等領域。而這些操作與二進位制資料緊密相關。
- 在Node中的Buffer,是一個二進位制資料容器,資料結構和陣列類似,專門用於Node中的資料放。
新建Buffer
Buffer.alloc(size[, fil[,encoding]])
size
:新建的buffer期望的長度fill
用來預填充新建的Buffer的值 預設0encoding
: 編碼格式 預設: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
- Buffer.form(str):將一個字串轉換成buffer
- Buffer.alloc(size):建立一個指定大小的buffer
- 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總結點:
- Buffer的結構和陣列很像,操作方法也和陣列很類似。
- Buffer中是以二進位制的方式儲存資料的
- Buffer是Node自帶的,不需要引入,直接可以使用。