在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...