node學習五:Buffer緩衝器
阿新 • • 發佈:2018-11-25
Buffer類:
Buffer物件是Node處理二進位制資料的一個介面。它是Node原生提供的全域性物件,可以直接使用,不需要require(‘buffer’)。Buffer本質上就是位元組陣列
構造方法(類):例項化buf物件
Buffer.from(array):
let buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);
console.log(buf.toString());
Buffer.from(string):
let buf = Buffer.from('hello','utf8'); console.log(buf);
Buffer.alloc(size):
let buf = Buffer.alloc(5);
console.log(buf);
靜態方法:
Buffer.isEncoding() 判斷是否支援該編碼
console.log(Buffer.isEncoding('utf8'));
console.log(Buffer.isEncoding('gbk'));
Buffer.isBuffer() 判斷是否為Buffer
let buf = Buffer.from('hello'); console.log(Buffer.isBuffer(buf)); console.log(Buffer.isBuffer({}));
Buffer.byteLength() 返回指定編碼的位元組長度,預設utf8
let buf = Buffer.from('中國','utf8');
console.log(Buffer.byteLength(buf));
console.log(buf.toString());
let buf1 = Buffer.from('中國','ascii');
console.log(Buffer.byteLength(buf1));
console.log(buf1.toString());
Buffer.concat() 將一組Buffer物件合併為一個Buffer物件
3); let buf2 = Buffer.alloc(5); let buf3 = Buffer.concat([buf1,buf2]); console.log(Buffer.byteLength(buf3));
let buf1 = Buffer.from('tom');
let buf2 = Buffer.from('jerry');
let buf3 = Buffer.concat([buf1,buf2]);
console.log(Buffer.byteLength(buf3));
console.log(buf3.toString());
例項方法:
write() 向buffer物件中寫入內容
let buf = Buffer.alloc(5);
console.log(buf);
let buf = Buffer.alloc(5);
buf.write('hello');
console.log(buf);
let buf = Buffer.alloc(5);
buf.write('hello',2);
console.log(buf);
let buf = Buffer.alloc(5);
buf.write('hello',2,2);
console.log(buf);
slice() 擷取新的buffer物件
toString() 把buf物件轉成字串
let buf = Buffer.from('hello');
let buf1 = buf.slice(1,4);
console.log(buf === buf1);//false
console.log(buf1.toString());
toJson() 把buf物件轉成json形式的字串
// toJSON方法不需要顯式(強制轉換)呼叫,當JSON.stringify方法呼叫的時候會自動呼叫toJSON方法
// const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
const buf = Buffer.from('hello');
const json = JSON.stringify(buf);
console.log(json);