es6 -- Buffer
阿新 • • 發佈:2018-12-27
通過長度建立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);