node學習之路(二)Buffer物件

2021-08-04 14:41:54 字數 1540 閱讀 6320

在js中對於二進位制資料沒有進行很好的支援(前端中二進位制資料用的較少)。

但是在出路tcp流和檔案流資料時,二進位制資料處理不可避免。因此node

定義了乙個buffer類來處理二進位制資料流。

1.建立buffer類

buffer類和其他類的建立並無區別,只需要new其物件即可。

注:buffer類有乙個length屬性,用來規定buffer類的長度。

第一種:var buf=new buffer(length)//可以使用buf.fill(vale,[offset],[end]);來初始化buf值

第二種:var buf=new buffer(array)//可以直接傳入乙個陣列

第三種:var buf=new buffer(string,[encoding])//直接傳入乙個字串形式來建立

2.字串長度與快取區的長度

buffer的長度不一定與字串的長度相同,buffer的長度表示的是位元組長度。

例:var buf=new buffer("我是部落格");

console.log(buf.length);//12

3.buffer與字串之間的互相轉換

buffer類中有tostring([encoding],start,end)的方法來講buffer轉成字串

引數1:指定轉換後的編碼格式。引數2:開始位置。引數3:結束位置。

buffer物件的write(string,offset,length,[encoding])方法

引數1:寫入buffer的字串,引數2:起始位置。引數3:長度。引數4:編碼方式。

4.buffer與json之間的相互轉換。

buffer轉換成json物件:

var buf=new buffer("我是部落格");

jsonstr=json.stringify(bus);

json.parse(jsonstr);

json物件轉換成buffer物件

var buf 2=new buffer(json.parse(jsonstr));

5.buffer與數值物件之間的相互轉換

buf.writeint8(value, offset[, noassert])//有符號的8進製數轉換

buf.writeuint8(value, offset[, noassert])//無符號的8進製數轉換

8可以為16 32 64...

6.buffer類中常用的方法:

1)isbuffer(obj)用於判斷物件是否是乙個buffer物件

2)bytelength(string,[encoding])判斷傳入的字串的位元組數

3)concat 連線兩個buffer物件

4)isencoding(encoding)用於檢測乙個字串是否是乙個有效的編碼格式字串。

Node中Buffer學習筆記

js語言沒有二進位制資料型別,而在處理tcp和檔案流的時候,必須要處理二進位制資料。nodejs提供了乙個buffer物件來提供對二進位制資料的操作,比如檔案流的讀寫 網路請求資料的處理等。buffer是乙個全域性類,無需載入就可使用。buffer 存的都是16進製制的。建立乙個長度為 10 且用 ...

Node學習4 Buffer模組

檔案和網路,就是file和http操縱,都是處理二進位制資料的。buffer 用於處理二進位製流資料,其實是16進製表示 類似陣列,但是buffer大小在建立時固定,無法調整 buffer因為使用頻率很高,是全域性變數,無需使用require獲取。建立buffer的幾種方法 初始化,預設用0填充 c...

Node核心模組Buffer

buffer是node掛載到global上的乙個類。也就是記憶體,乙個漢字在utf8編碼下是三個位元組。buffer的變現形式是16進製制。let buf buffer.alloc 6 console.log buf 複製 let buf buffer.from 123131 let buf buf...