1. 程式人生 > >nodejs學習筆記——使用buffer類處理二進位制資料

nodejs學習筆記——使用buffer類處理二進位制資料

1. 建立buffer物件:new Buffer(size)

buf.fill(value,[offset],[end])第一個引數指需要被寫入的值,第二個引數指定從第幾個位元組處開始寫入被指定的數值,預設為0。第三個引數是指定將數值一直寫到第幾位元組處,預設Buffer物件的大小。

其中nodejs可利用的編碼有ascii,utf8,utf16le,ucs2,base64,hex(十六進位制)

2. buf[2]指的是快取區中第三個位元組資料轉換成整數後的數值。字串物件一旦建立就不能修改,但是buffer物件是可以修改的。

str = '我喜歡程式設計';
str[2] = '愛';
console.log(str);//我喜歡程式設計。不會發生變化。

3. slice(跟字串的slice一樣)可以取出buffer物件指定位置的資料,取出來的資料發生變化,原來的資料組也會發生相應的變化。

4. toString()可以實現buffer和字串的相互轉換。對於buffer物件長度較大時,可以使用decoder轉換字串,需要先進行引入。

toString:
buf = new Buffer('我喜愛');
//輸出<Buffer e6 88 91 e5 96 9c e7 88 b1>
buf.toString("utf8",6,9);//輸出“愛”



decoder:
str = new Buffer([0xe6 0x88 0x91 0xe5 0x96])
//<Buffer e6 88 91 e5 96>
var StringDecoder = require("string_decoder").StringDecoder;
var decoder = new StringDecoder();
decoder.write(str)//可以正確的轉換成“我”。

5. buf.write(string,[offset],[length],[encoding]),第一個引數指需要寫入的字串,第二個引數指寫入位置,第三個引數表示從寫入位置開始,一直到offset+length這個位置為止都替換成寫入的字串。第四個指定編碼格式。

6. a.copy(b,10);指的是將a複製給b,從b的第10個位元組開始。

7. isBuffer判斷一個物件是不是一個Buffer物件。

8. concat將Buffer物件結合建立一個新的Buffer物件。

9. Buffer.isEncoding(encoding)檢測一個字串是否是一個有效的編碼格式字串。