nodeJs的Buffer操作


再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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM