Buffer(緩衝器)
Buffer物件表示固定長度的位元組序列,Buffer是Unit8Array的子類。
- Buffer的結構和陣列很像,操作的方法也和陣列類似
- 陣列中不能儲存二進位制的檔案,而buffer就是專門用來儲存二進位制資料
- 使用buffer不需要引入模組,直接使用即可
- 在buffer中儲存的都是二進位制資料,但是在顯示時都是以16進位制的形式顯示(二進位制顯示的太長了,不方便顯示)
- buffer中每一個元素的範圍是從00 - ff (即:0-255) (即:00000000-11111111),buffer中的一個元素佔用一個位元組(8bit)。buffer.length輸出的是佔用記憶體的大小。
建立Buffer
1. 利用字串建立buffer:Buffer.from
let str = "RTSP"
let buf = Buffer.from(str)
console.log(buf) // <Buffer 52 54 53 50>
2. 使用Buffer方法建立: Buffer.alloc
let buf = new Buffer(10)
// OR
let buf = Buffer.alloc(10)
3. Buffer.allocUnsafe(size)
Buffer.allocUnsafe和Buffer.alloc的最大區別是使用allocUnsafe函式申請到的記憶體空間是沒有被初始化的,也就是說可能還殘留了上次使用的資料,因此會有資料安全的問題。allocUnsafe函式接收一個size引數作為buffer區域的大小:
const buff = Buffer.allocUnsafe(5)
console.log(buff)
// Prints (實際內容可能有出入): <Buffer 8b 3f 01 00 00>
建立buffer的時候實際上是為buffer分配記憶體連續的空間,如果在執行的時候再新增空間就不一定是連續空間了,這樣buffer就不好維護了。
轉換為字串
buf.tostring() // 將緩衝區中的資料轉換為字串