1. 程式人生 > >es6 -- Buffer

es6 -- Buffer

通過長度建立buffer:

let buffer = Buffer.alloc(100);
console.log(buffer)

得到:<buffer 00 00 00 00 00 00 00 00···> 100個
比較消耗效能:先將100位元組清空再分配

let buffer = Buffer.allocUnsafe(100);
不清空,可能還有上一次的內容

陣列轉buffer

類似於array.from()

let buffer = Buffer.from([17,18,19,0x11]) //最大為255
console.log(buffer)

得到的結果為<buffer 11 12 13 11>

字串轉buffer

let buffer = Buffer.from('我是一個兵');
console.log(buffer.length);
buffer.toString();

3*5 = 12bit

buffer的方法slice

let buffer = Buffer.from([1,2,3]);
let newBuffer = buffer.slice(0,1);
newBuffer[0] = 100;
console.log(buffer);

淺拷貝,將記憶體的地址引出
最終得到:<buffer 64 2 3>

buffer的方法fill

buffer.fill(value, [offset], [end])
接收引數:


value 將要填充的資料
offet 填充資料的開始位置,不指定預設為 0
end 填充資料的結束位置,不指定預設為 buffer 的 長度。

//例子1中,不指定填充內容的起止位置,50位元組全為h
var b = new Buffer(50);
b.fill("h");
 
//例子2中,指定了填充內容的起止位置,填充最後一個位置h
var b = new Buffer(50);
var len = b.length;
b.fill("h" , len-1 , len);

buffer 的copy方法

var buf1 = Buffer.from('誰是最帥的');
var buf2 =
Buffer.from('我自己'); var buf = Buffer.allocUnsafe(24); 三個引數:目標buffer,起始點位置,終止點位置。 buf1.copy(buf,0); buf2.copy(buf,15);