再nodejs里,很多類是引入模塊才能使用,Buffer是一個全局類,他不需要require引入
Buffer有三種構造函數
//1.在構造函數傳一個數字,規定buffer的長度。默認全是16進制的0 var bf = new Buffer(size); //2.傳一個數組給buffer var bf = new Buffer(array]); //3.傳入一個字符串和編碼格式,編碼格式可以省略 var bf = new Buffer(str,[encoding]);
buffer與字符串的區別
buffer里存的是16進制數字,並且不同的字符的長度是不同的,因此buffer的長度是按照字節長度計算的
var str = '你是誰'; console.log(str.length); //3 var bf = new Buffer(str); console.log(bf.length);//9
字符串有一些操作的方法,indexOf()等,Buffer沒有,只有一個取出指定位置處理數據的方法slice,和String的slice一樣,並且修改slice取出的數據,buffer也會改變
字符串是不可以改變的,而buffer對象是可以改變的
var str = '你是誰'; var bf = new Buffer(str); console.log(str); //你是誰 console.log(bf); //<Buffer e4 bd a0 e6 98 af e8 b0 81> str[1] = '的'; console.log(str); //你是誰 bf[2] = 0; console.log(bf); //<Buffer e4 bd 00 e6 98 af e8 b0 81>
buffer轉換為字符串toString()
var bf = new Buffer('你是誰'); console.log(bf.toString('utf8',3)); //有三個參數都是可選的,第一個參數指定編碼格式,第二個和第三個是起始位置和終止位置
buffer的write方法
var bf = new Buffer('你是誰'); bf.write('的',3,3,'utf8'); console.log(bf.toString()); //有四個參數,1是寫入的字符串,2,3是要寫入的起始位置和終止位置,4是編碼格式
buffer與json的互換
var bf = new Buffer('你是誰'); json = JSON.stringify(bf); console.log(json); //轉換為字符串 var arr = JSON.parse(json); console.log(arr); //轉換為對象 var copy = new Buffer(arr); console.log(copy.toString()); //還原
buffer的復制copy
var bf = new Buffer('你是誰'); console.log(bf); var copyBf = new Buffer('我'); console.log(copyBf); //把bf復制到copyBf里,第二個參數是從copyBf的那個位置開始,第三個參數是從bf的那個位置開始,第四個是bf的那個位置結束,不包括最后一個 bf.copy(copyBf,1,1,3); console.log(copyBf);
buffer的類方法
//1.isBuffer var bf = '你是誰'; console.log(Buffer.isBuffer(bf)); //2.byteLength指定字符串的字節長度 var str = '你是誰'; console.log(Buffer.byteLength(str)); //3.concat幾個Buffer連接,返回一個新的Buffer,參數有倆,第一個數組,要連接的buffer數組,第二個是設置新buffer的長度 console.log(Buffer.concat([new Buffer(3),new Buffer('123')],2)); //4.isEncoding判斷是不是有效的編碼格式字符串 var str1 = 'utf8'; var str2 = 'cher'; console.log(Buffer.isEncoding(str1)); //true console.log(Buffer.isEncoding(str2)); //false