Node.js使用Buffer類處理二進制數據(一)

    在Node.js中提供了Buffer類,經過Buffer類中的各類構造函數建立Buffer對象,從而實現將緩存區中的字節數據轉換爲字符串對象以及將緩存區中的字節數據與數值對象之間進行轉換。javascript

1、建立Buffer對象java

    Node.js中的Buffer類是一個全局類,也就是說Buffer類能夠在任何模塊中被使用,不須要爲了使用Buffer類二加載任何模塊。能夠使用new關鍵字建立Buffer類的實例對象,在Buffer類中用於建立實例對象的構造方法有三種。     (1)第一種是隻須要傳入緩存區大小做爲構造函數的參數建立實例對象,程序示例:數組

var buf = new Buffer(size);	//size表示須要設置的緩存區的大小,以字節爲單位

    在建立Buffer類的實例對象以後,能夠經過實例對象的length屬性獲取緩存區的大小。Buffer類的fill()方法能夠用來初始化緩存區中的內容,程序示例:緩存

var buf = new Buffer(128);
buf.fill(2, 2 ,10);	//使用Buffer類的fill()方法初始化緩存區內容

    fill()方法能夠接受三個參數,第一個參數是必須指定的參數,表示被寫入緩存區的內容。第二個參數爲可選參數,表示從緩存區的第幾個字節開始寫入內容,默認是從緩存區開始的位置寫入參數。第三個參數也是可選參數,表示向緩存區寫入內容直到第幾個字節爲止,默認是將整個緩存區寫滿。     (2)Buffer類中提供的第二種建立實例的構造方法是將數組傳入構造方法建立Buffer類的實例對象。程序示例:函數

var array = [1,2,3,4,5];
var buff = new Buffer(array);	//將數組做爲參數傳入構造方法建立Buffer類的實例對象

程序運行截圖:ui

圖片1.png

    (3)第三種建立Buffer類實例對象的方式是將字符串做爲參數直接傳入構造方法建立實例對象,程序示例:編碼

var string = 'Hello World';
var buffer = new Buffer(string);	//直接傳入字符串建立Buffer類的實例對象

程序運行截圖:3d

圖片2.png

    在使用字符串做爲參數建立Buffer類的實例對象時,能夠在構造函數中添加第二個參數指定字符編碼格式,默認的字符編碼格式是「utf8」。code

2、Buffer對象與字符串對象的轉換對象

    (1)使用Buffer對象的toString()方法將緩存區中的內容按照指定的字符編碼格式轉換成字符串對象,程序示例:

var buffer = new Buffer("Buffer對象與字符串對象之間的轉換。");
console.log(buffer.toString("utf8", 6, 24));

程序運行截圖:

圖片3.png     toString()方法能夠接受三個可選參數,第一個參數表示字符集編碼格式,經過設置字符集編碼格式能夠將Buffer對象緩存區中的內容轉換成指定的編碼格式的字符串,默認的編碼格式是「utf8」。第二個參數表示轉換的起始位置,默認的起始位置是整個緩存區的開頭。第三個參數表示轉換的結束位置,默認的結束位置是緩存區的終點。     (2)使用Buffer類的write()方法能夠向已經建立的Buffer對象中寫入字符串。程序示例:

var buffer = new Buffer("我喜歡蘋果。");
buffer.write("吃", 3, 3);
console.log(buffer.toString());

程序運行示例:

圖片4.png

    (3)在Node.js中還能夠使用StringDecoder對象將Buffer對象中的內容轉換爲字符串對象。與toString()的做用是相同的,程序示例:

var string_decoder = require("string_decoder");
var StringDecoder = string_decoder.StringDecoder;
var decoder = new StringDecoder([encoding]);	//encoding表示可設置字符集編碼格式

    (4)會用JSON.stringify()方法能夠將Buffer對象緩存區中的內容轉換爲一個字符串,使用JSON.parse()方法能夠將字符串轉換爲數組。     (5)使用Buffer對象的copy()方法能夠將一個Buffer對象緩存區中的內容複製到另外一個Buffer實例對象的緩存區中。程序示例:

var buffer1 = new Buffer("明天是晴天。");
console.log(buffer1.toString());
var buffer2 = new Buffer("Hello World");
console.log(buffer2.toString());
buffer1.copy(buffer2, 4);
console.log(buffer2.toString());

程序運行截圖:

圖片5.png

相關文章
相關標籤/搜索