【node】Buffer

看見了發表於2023-04-24

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() // 將緩衝區中的資料轉換為字串

相關文章