在node中,在處理網絡協議、操作數據庫、處理圖片、接收上傳文件、在處理網絡流和文件的操作中,還需要處理大量二進制數據,js原有的字符串不足以滿足這些需求,於是Buffer應運而生;
Buffer對象
Buffer對象類似於數組,它的元素爲16進制的兩位數,即0到255的數值。
- 不同編碼的字符串佔有元素的個數不一樣,中文字在UTF-8下佔用三個元素,字母和半角標符號佔一個元素;
- 不同的編碼規則(base64、UTF-8),相同的字符佔有的元素個數也不一樣;
例如:
- Buffer也可以通過length屬性得到長度,也可以通過下標訪問元素,在構造對象時也很相似:
var bufffer = new Buffer(10)
console.log(buffer.length); // 10
Buffer實例方法
var buf = new Buffer('hello jinghong');
buf.length; // 14
buf.write('Hi jinghong');//11
buf.toString(); //'Hi jinghong'
buf.length; //14這個長度是初始化Buffer時候指定的
buf.write(' jinghongjinghongjinghong', 2, 16); //12
buf.toString(); // 'Hi jinghongji'
var buf = new Buffer('hello world')
buf.length;//11
var buf2 = new Buffer(5);
buf.copy(buf2);//5
buf2.toString();//hello
buf.copy(buf2, 0, 6, 11)//5, buf2是從buf的第6位開始複製到第11位(不包含第11位);buf2是從第1位開始寫入;
buf2.toString(); // world