nodejs Buffer 緩衝區 筆記

2021-09-27 22:10:03 字數 2539 閱讀 6443

buffer類是隨node核心一起發布的核心庫。

buffer庫為node.js帶來了一眾儲存原始資料的方法,可以讓node.js處理二進位制資料。

乙個buffer例項類似於乙個整數陣列,但它對應v8堆記憶體之外的一塊原始記憶體。

buffer建立方法:

1)buffer.alloc(size,[fill[,encoding]]):

返回乙個指定大小的buffer例項,沒有fill的話預設用0填充。

2)buffer.allocunsafe(size):

返回乙個指定大小的buffer例項,但是不會被初始化,可能包含敏感資訊。

3)buffer.from(array):

返回乙個array的值初始化的新的buffer例項(傳入的array值只能是數字,不然就會被0覆蓋掉)。

4)buffer.from(arraybuffer[,byteoffset[,length]]):

返回乙個新建的與給定的arraybuffer共享同一記憶體的buffer。

5)buffer.from(buffer):

複製傳入的buffer例項的資料,並返回乙個新的buffer例項。

6)buffer.from(string[,encoding]):

返回乙個唄string的值初始化的新的buffer例項

node.js目前支援的字元編碼包括:

1)ascii

–支援7位ascii資料。

2)utf-8

–多位元組編碼的unicode字元。

3)utf16le

–2或4個位元組,小字節序編碼的unicode字元。

4)ucs2

–utf16le的別名。

5)base64

6)latin1

–一種把buffer編碼成一位元組編碼的字串的方式。

7)binary

–latin1的別名。

8)hex

–將每個位元組編碼為兩個十六進製制字元

buffer寫入node緩衝區的語法如下:

buf.

write

(string[

,offset[

,length]][

,encoding]

)

引數介紹:

1)string:寫入緩衝區的字串

2)offsetl緩衝區開始寫入的索引值,預設為0

3)length:寫入的位元組數,預設為buffer.length

4)encoding:使用的編碼。預設為』utf-8』

返回值為實際寫入的大小,若是buffer空間不足,則只會寫入部分字串。

buffer讀取資料的語法如下:

buf.

tostring

([encoding[

,start[

,end]]]

)

引數介紹:

1)encoding:使用的編碼。預設為』utf-8』。

2)start:指定開始讀取的索引位置,預設為0。

3)end:結束為止,預設為緩衝區的末尾。

將buffer轉換為json物件

語法:

buf.

tojson

()

緩衝區合併

語法:buffer.concat(list,[,totallength])

引數介紹:

1)list:用於合併的buffer物件陣列列表

2)totallength:指定合併後buffer物件的總長度

返回值:返回乙個多個成員合併的新buffer物件。

緩衝區比較

語法:buf.compare(otherbuffer);

引數介紹:

1)otherbuffer:與buf物件比較的另乙個buffer物件。

返回值:返回乙個數字,表示buf在otherbuffer之前,之後或相同。

拷貝緩衝區

語法:buf.copy(targetbuffer[,targetstart[,sourcestart[,sourceend]]])

引數介紹:

1)targetbuffer:要拷貝的buffer物件

2)targetstart:數字,可選,預設為0

3)sourcestart:數字,可選,預設為0

4)sourceend:數字,可選,預設為buffer.length

沒有返回值

緩衝區裁剪

語法:buf.slice([start,[,end]])

引數介紹:

1)start:數字,可選,預設為0

2)end:數字,節選,預設為buffer.length

返回乙個新的緩衝區,它和舊緩衝區指向同一塊記憶體,但是是從索引的start到end的位置剪裁。

緩衝區長度

語法:buf.length

返回buffer物件所佔的記憶體長度

輸入緩衝區與輸出緩衝區

本博文通過一段程式來理解輸入緩衝區與輸出緩衝區。程式如下 author wanghao created time thu 17 may 2018 06 03 12 ampdt file name test.c description include int main int argc,const c...

使用者程序緩衝區和核心緩衝區

常常聽到有程式設計師會跟你討論 我們在讀寫檔案的時候,系統是有快取的 但實際上有一部分人把使用者程序緩衝區和系統空間的緩衝區的概念混淆了,包括這兩種緩衝區的用法和所要解決的問題,還有其它類似的概念。本文就來區分一下不同的緩衝區概念 主要針對類unix平台 使用者程序和作業系統的關係 首先我用一張圖來...

php 緩衝區,PHP的輸出緩衝區

1 什麼是緩衝區?緩衝區的作用是把輸入或者輸出的內容先放進記憶體,而不顯示或者讀取,最本質的作用就是協調高速cpu和相對緩慢的io裝置 磁碟等 的運作。2 php在執行的時候,在什麼地方有用到緩衝區?當執行php的時候,如果碰到了echo print r之類的會輸出資料的 php就會將要輸出的資料放...