node裡面的buffer理解

2022-05-07 04:39:10 字數 1356 閱讀 4013

node提供了專門讀寫檔案的模組,檔案內容都是2進製存放在記憶體中的

node讀取檔案的結果都是16進製制,那麼你要學會進製轉換,二進位制0b開頭 ,八進位制0開頭,十六進製制0x

基礎知識:

1位元組=8bit

乙個漢字=3位元組,在不同的編碼下位元組個數還有不同的

乙個英文=1位元組

buffer裡面用16機制表示

buffer.alloc(3) //

3是代表位元組

建立乙個有3個位元組的記憶體空間

預設是0x00 0x00 0x00 0x00 

let buf1 = buffer.alloc(12)

let buf2 = buffer.from('hello')

let buf3 = buffer.from('world')

buf2.copy(buf1, 0, 0, 5)

buf3.copy(buf1, 5, 0, 5)

console.log(buf1.tostring())

//helloworld

簡單的實現一下copy的方法

buffer.prototype.copy = function

(target, targetstart, sourcestart, sourceend)

}

上面是通過copy方法把兩個記憶體拷貝到一起,還有concat方法也可以

let cat = buffer.concat([buf2, buf3])

兩個buffer拼接到一起,返回的乙個新的buffer,第二次引數是指定長度

基本原理是這樣的

buffer.concat = function (lists, len = lists.reduce((prev, next) => prev + next.length, 0)) 

return buf.slice(0, offset) //

返回有效的內容

}

buffet中的indexof可以知道當前存在的位置

let index = buffer.from('a*b').indexof('*')

console.log(index)

當時很遺憾buffer沒有split來拆分成兩段buffer,辣麼就自己寫

buffer.prototype.split = function

(step)

arr.push(

this

.slice(pos));

return

arr;

}

解決node裡面的中文亂碼

const server http.createserver req,res 個訪問的 res.end server.listen 2080,error 我是想用node建乙個本地的伺服器,然後統計訪問的個數,但是卻出現了中文亂碼 榪欐槸絎 0涓 闂 殑 後來查詢資料,原來加乙個頭部 就行 設定 r...

js 和 node 裡面的事件迴圈

前言 之前有接觸過 js 事件迴圈,感覺比較容易理解。後面學習 深入淺出node.js 的時候,發現裡面提到的事件迴圈有點繞比較難理解,後面查了一些資料和部落格後,發現 node 環境下的事件迴圈和我之前接觸的事件迴圈是有一定的區別的。廢話不多說,先上圖 js 的事件迴圈,把非同步任務分為兩種 巨集...

Node核心模組Buffer

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