Node中Buffer學習筆記

2021-09-11 14:35:17 字數 2141 閱讀 6775

js語言沒有二進位制資料型別,而在處理tcp和檔案流的時候,必須要處理二進位制資料。nodejs提供了乙個buffer物件來提供對二進位制資料的操作,比如檔案流的讀寫、網路請求資料的處理等。

buffer是乙個全域性類,無需載入就可使用。buffer 存的都是16進製制的。

// 建立乙個長度為 10、且用 0 填充的 buffer。

const buf1 = buffer.alloc(10);

// 建立乙個長度為 10、且用 0x1 填充的 buffer。

const buf2 = buffer.alloc(10, 1);

// 建立乙個長度為 10、且未初始化的 buffer。

const buf3 = buffer.allocunsafe(10);複製**

一般都要合法傳遞 0-255之間

// 建立乙個包含 [0x1, 0x2, 0x3] 的 buffer。

const buf4 = buffer.from([1, 2, 3]);複製**

const buf5 = buffer.from('字串');複製**
相當於手動初始化,擦乾淨桌子,將buffer內容清0

buffer.fill(0);複製**
buffer.tostring('utf8',3,6)複製**
buffer.write('前',0,3,'utf8');

buffer.write('端',3,3,'utf8'); //前端複製**

let newbuf = buffer.slice(0,4);複製**
// buffer 和二維陣列是一樣的,buffer存的都是記憶體位址,請看例項

​let buffer = buffer.alloc(6, 1)

let newbuffer = buffer.slice(0, 3)

newbuffer[0] = 100

console.log(buffer)複製**

複製buffer 把多個buffer拷貝到乙個大buffer上

let buf5 = buffer.from('前端開發');

let buf6 = buffer.alloc(6);

buf5.copy(buf6,0,0,4);

buf5.copy(buf6,3,3,6);

// buf6=前端複製**

手寫乙個copy方法

// 目標buffer 目標開始的拷貝位置 源的開始 源的結束位置

buffer.prototype.mycopy=function(target,targetstart,sourcestart,souceend)

}buffer2.mycopy(buffer1,1,3,6);

console.log(buffer1.tostring())複製**

let buf1 = buffer.from('前');

let buf2 = buffer.from('端');

let buf3 = buffer.concat([buf1,buf2],6);

console.log(buf3.tostring());複製**

手寫乙個concat方法

buffer.myconcat = function (list,len) ,0);

} let newbuffer = buffer.alloc(len); // 申請buffer

let index = 0;

list.foreach(buffer =>);

return newbuffer.slice(0,index); // 返回拷貝後的buffer

}// 接收請求時會採用concat方法進行拼接

console.log(buffer.myconcat([buffer1, buffer2, buffer3],10).tostring());複製**

node 中的buffer操作

建立 var buf1 buffer.from abc var buf2 buffer.from def 合併buffer物件 var newbuf buffer.concat buf1,buf2 直接 連線 var newbuf buf1 buf2 console.log newbuf.tostr...

node學習之路(二)Buffer物件

在js中對於二進位制資料沒有進行很好的支援 前端中二進位制資料用的較少 但是在出路tcp流和檔案流資料時,二進位制資料處理不可避免。因此node 定義了乙個buffer類來處理二進位制資料流。1.建立buffer類 buffer類和其他類的建立並無區別,只需要new其物件即可。注 buffer類有乙...

Node學習4 Buffer模組

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