溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在nodejs中使用buffer緩沖區(qū)

發(fā)布時間:2021-04-01 17:50:25 來源:億速云 閱讀:228 作者:Leah 欄目:web開發(fā)

今天就跟大家聊聊有關(guān)如何在nodejs中使用buffer緩沖區(qū),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)建buffer類

1、創(chuàng)建長度為指定字節(jié)的buffer實例

var buffer = new Buffer(10); //創(chuàng)建長度為10字節(jié)的buffer實例

2、通過數(shù)組創(chuàng)建buffer實例

var buffer = new Buffer([10,20,30,40,50]);

3、通過一個字符串來創(chuàng)建buffer實例

var buffer = new Buffer('www.google.com','utf-8');
//utf-8 是默認(rèn)的編碼方式,此外還可以指定以下編碼:"ascii", "utf8", "utf16le", "ucs2", "base64" 和 "hex"

緩沖區(qū)長度

語法:

buf.length;

返回值:

返回 Buffer 對象所占據(jù)的內(nèi)存長度。

實例:

var buffer = new Buffer('www.runoob.com');
// 緩沖區(qū)長度
console.log("buffer length: " + buffer.length); //buffer length: 14

寫入緩沖區(qū)

語法:

buffer.write(string[, offset][, length][, encoding])

參數(shù):

  • string:寫入緩沖區(qū)的字符串。

  • offset:緩沖區(qū)開始寫入的索引值,默認(rèn)為 0 。

  • length:寫入的字節(jié)數(shù),默認(rèn)為 buffer.length

  • encoding:使用的編碼。默認(rèn)為 'utf8' 。

返回值:

返回實際寫入的大?。╪umber類型)。如果 buffer 空間不足, 則只會寫入部分字符串。

實例:

buf = new Buffer(256);
len = buf.write("www.runoob.com");
console.log("寫入字節(jié)數(shù) : "+ len); //寫入字節(jié)數(shù) : 14

從緩沖區(qū)讀取數(shù)據(jù)

語法:

buf.toString([encoding][, start][, end])

參數(shù):

  • encoding:使用的編碼,默認(rèn)為utf-8

  • start:指定開始讀取的索引位置,默認(rèn)為0

  • end:指定讀取的結(jié)束位置,默認(rèn)為緩沖區(qū)的末尾

返回值:

解碼緩沖區(qū)數(shù)據(jù),并使用指定的編碼返回字符串

實例:

buf = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
 buf[i] = i + 97;
}
console.log( buf.toString('ascii'));  // 輸出: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5)); // 輸出: abcde
console.log( buf.toString('utf8',0,5)); // 輸出: abcde
console.log( buf.toString(undefined,0,5)); // 使用 'utf8' 編碼, 并輸出: abcde

buffer對象轉(zhuǎn)換成json對象

語法:

toJSON()方法

返回值:

json對象

實例:

var buf = new Buffer('www.google.com');
var json = buf.toJSON(buf);
console.log(json); //[ 119, 119, 119, 46, 103, 111, 111, 103, 108, 101, 46, 99, 111, 109 ]

緩沖區(qū)合并

語法:

Buffer.concat(list[, totalLength])

參數(shù):

  • list:用于合并的 Buffer 對象數(shù)組列表。

  • totalLength:指定合并后Buffer對象的總長度。

返回值:

返回一個多個成員合并的新 Buffer 對象。

實例:

var buf1 = new Buffer("谷歌網(wǎng)址:");
var buf2 = new Buffer("www.google.com");
var buf3 = Buffer.concat([buf1,buf2]);
console.log('buf1的內(nèi)容為:'+buf1.toString()); //buf1的內(nèi)容為:谷歌網(wǎng)址:
console.log('buf2的內(nèi)容為:'+buf2.toString()); //buf2的內(nèi)容為:www.google.com
console.log('buf3的內(nèi)容為:'+buf3.toString()); //buf3的內(nèi)容為:谷歌網(wǎng)址:www.google.com

緩沖區(qū)拷貝

語法:

buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])

參數(shù):

參數(shù)描述如下:

  • targetBuffer - 要拷貝的 Buffer 對象。

  • targetStart - 數(shù)字, 可選, 默認(rèn): 0

  • sourceStart - 數(shù)字, 可選, 默認(rèn): 0

  • sourceEnd - 數(shù)字, 可選, 默認(rèn): buffer.length

返回值:

沒有返回值。

實例:

var buf1 = new Buffer('ABC');
// 拷貝一個緩沖區(qū)
var buf2 = new Buffer(2);
var buf3 = new Buffer(3);
var buf4 = new Buffer(5);
var buf5 = new Buffer('abcdef');
buf1.copy(buf2);
buf1.copy(buf3);
buf1.copy(buf4);
buf1.copy(buf5);
console.log("buf2 content: " + buf2.toString()); //buf2 content: AB
console.log("buf3 content: " + buf3.toString()); //buf3 content: ABC
console.log("buf4 content: " + buf4.toString()); //buf4 content: ABC 因為開辟出來的內(nèi)存大了些,所以這里接一堆怪符號
console.log("buf5 content: " + buf5.toString()); //buf5 content: ABCdef

緩沖區(qū)裁剪

語法:

buf.slice([start][, end])

參數(shù):

參數(shù)描述如下:

  • start - 數(shù)字, 可選, 默認(rèn): 0

  • end - 數(shù)字, 可選, 默認(rèn): buffer.length

返回值:

返回一個新的緩沖區(qū),它和舊緩沖區(qū)指向同一塊內(nèi)存,但是從索引 start 到 end 的位置剪切。

實例:

var buffer1 = new Buffer('runoob');
// 剪切緩沖區(qū)
var buffer2 = buffer1.slice(0,2);
console.log("buffer2 content: " + buffer2.toString()); //buffer2 content: ru

看完上述內(nèi)容,你們對如何在nodejs中使用buffer緩沖區(qū)有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI