国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

web前端之了解node五:Buffer(緩沖區)

2024-04-27 15:16:01
字體:
來源:轉載
供稿:網友

web前端之了解node五:Buffer(緩沖區)

javaScript 語言自身只有字符串數據類型,沒有二進制數據類型。

但在處理像TCP流或文件流時,必須使用到二進制數據。因此在 Node.js中,定義了一個 Buffer 類,該類用來創建一個專門存放二進制數據的緩存區。

在 Node.js 中,Buffer 類是隨 Node 內核一起發布的核心庫。Buffer 庫為 Node.js 帶來了一種存儲原始數據的方法,可以讓 Node.js 處理二進制數據,每當需要在 Node.js 中處理I/O操作中移動的數據時,就有可能使用 Buffer 庫。原始數據存儲在 Buffer 類的實例中。一個 Buffer 類似于一個整數數組,但它對應于 V8 堆內存之外的一塊原始內存。

創建 Buffer 類

Node Buffer 類可以通過多種方式來創建。

方法 1

創建長度為 10 字節的 Buffer 實例:

var buf = new Buffer(10);

方法 2

通過給定的數組創建 Buffer 實例:

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

方法 3

通過一個字符串來創建 Buffer 實例:

var buf = new Buffer(“www.runoob.com”, “utf-8”);

utf-8 是默認的編碼方式,此外它同樣支持以下編碼:”ascii”, “utf8”, “utf16le”, “ucs2”, “base64” 和 “hex”。

寫入緩沖區

語法

寫入 Node 緩沖區的語法如下所示:

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

參數描述如下:

string- 寫入緩沖區的字符串。

offset- 緩沖區開始寫入的索引值,默認為 0 。

length- 寫入的字節數,默認為 buffer.length

encoding- 使用的編碼。默認為 ‘utf8’ 。

返回值

返回實際寫入的大小。如果 buffer 空間不足, 則只會寫入部分字符串。

實例:

buf=new Buffer(256);len=buf.write("www.baidu.com","utf-8");console.log("寫入字節長度:"+len);

運行:

node E:/study/node/main1.js

從緩沖區讀取數據

語法

讀取 Node 緩沖區數據的語法如下所示:

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

參數描述如下:

encoding- 使用的編碼。默認為 ‘utf8’ 。

start- 指定開始讀取的索引位置,默認為 0。

end- 結束位置,默認為緩沖區的末尾。

返回值

解碼緩沖區數據并使用指定的編碼返回字符串。

實例:

buf=new Buffer(26);for(var i=0;i<26;i++){ buf[i]=i+97;}console.log(buf.toString('ascii'));console.log(buf.toString('ascii',0,5));console.log(buf.toString('utf8',0,5));console.log(buf.toString(undefined,0,5));//使用‘UTF8’編碼

運行:

node E:/study/node/main1.js

將 Buffer 轉換為 JSON 對象:

語法

將 Node Buffer 轉換為 JSON 對象的函數語法格式如下:buf.toJSON()

返回值

返回 JSON 對象。

實例:

var buf=new Buffer('www.baidu.com');var json=buf.toJSON(buf);console.log(json);

緩沖區合并

語法

Node 緩沖區合并的語法如下所示:Buffer.concat(list[,totalLength])

參數描述如下:

list- 用于合并的 Buffer 對象數組列表。

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

返回值

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

實例:

var buffer1=new Buffer("abc");var buffer2=new Buffer("www.baidu.com");var buffer3=Buffer.concat([buffer1,buffer2],6);console.log(buffer3.toString());

緩沖區比較

語法

Node Buffer 比較的函數語法如下所示, 該方法在 Node.js v0.12.2 版本引入:buf.compare(otherBuffer);

參數描述如下:

otherBuffer- 與buf對象比較的另外一個 Buffer 對象。

返回值

返回一個數字,表示buf在otherBuffer之前,之后或相同。

實例:

var buffer1=new Buffer("abc");var buffer2=new Buffer("abcd");var result=buffer1.compare(buffer2);if(result<0){ console.log(buffer1+"在"+buffer2+"之前");}else if(result==0){ console.log(buffer1+"與"+buffer2+"相同");}else{ console.log(buffer1+"在"+buffer2+"之后");}

拷貝緩沖區

語法

Node 緩沖區拷貝語法如下所示:buf.copy(targetBuffer[,targetStart[,sourceStart[,sourceEnd]]])

參數描述如下:

targetBuffer- 要拷貝的 Buffer 對象。

targetStart- 數字, 可選, 默認: 0

sourceStart- 數字, 可選, 默認: 0

sourceEnd- 數字, 可選, 默認: buffer.length

實例:

var buffer1=new Buffer("ABC");//拷貝一個緩沖區var buffer2=new Buffer(3);buffer1.copy(buffer2);console.log(buffer2.toString());

緩沖區裁剪

語法

Node 緩沖區裁剪語法如下所示:buf.slice([start[,end]])

參數描述如下:

start- 數字, 可選, 默認: 0

end- 數字, 可選, 默認: buffer.length

返回值

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

實例:

var buffer1=new Buffer("ABCDEFG");var buffer2=buffer1.slice(1,5);console.log("buffer2 content:"+buffer2.toString());

緩沖區長度

語法

Node 緩沖區長度計算語法如下所示:buf.length;

返回值

返回 Buffer 對象所占據的內存長度。

實例:

var buffer1=new Buffer("ABCDEFG");console.log("buffer1 length:"+buffer1.length);

方法參考手冊

以下列出了 Node.js Buffer 模塊常用的方法

這里寫圖片描述 這里寫圖片描述 這里寫圖片描述 這里寫圖片描述 這里寫圖片描述 這里寫圖片描述 這里寫圖片描述 這里寫圖片描述 這里寫圖片描述

參考資料


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中江县| 元氏县| 建阳市| 上虞市| 宁远县| 桃园县| 杭锦旗| 武宁县| 湘潭市| 秀山| 枣庄市| 越西县| 翁牛特旗| 南岸区| 黄平县| 罗定市| 岑巩县| 邓州市| 黔东| 盐池县| 合江县| 噶尔县| 邹平县| 塘沽区| 绥阳县| 涿鹿县| 新乡县| 尼玛县| 黔西| 利津县| 金坛市| 高唐县| 饶阳县| 姚安县| 鸡泽县| 通江县| 松阳县| 沾化县| 沾化县| 湖南省| 丹凤县|