nodejs學習筆記——使用buffer類處理二進位制資料
阿新 • • 發佈:2018-12-02
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)檢測一個字串是否是一個有效的編碼格式字串。