- 從結(jié)構(gòu)上看 Buffer 像一個數(shù)組,他的元素為 16 進(jìn)制的兩位數(shù)
- 數(shù)組中不能存儲二進(jìn)制文件纷跛,Buffer 可以存儲二進(jìn)制數(shù)據(jù)
- 實(shí)際上一個元素就表示內(nèi)存中的一個字節(jié)
- 實(shí)際上 Buffer 中的內(nèi)存不是通過
js
分配的,而是在底層通過 c++
申請的
- 也就是我們可以直接通過 Buffer 來創(chuàng)建內(nèi)存中的空間
1. 使用Buffer
- 不需要引入模塊耍鬓,直接使用即可
- Buffer中存儲的數(shù)據(jù)都是二進(jìn)制數(shù)據(jù)氯窍,但是顯示時都已16進(jìn)制形式顯示
- Buffer 中每一個元素的范圍是從 00 - f f (0 - 255) (00000000 - 11111111)
- 計(jì)算機(jī)中 一個 0 or 一個 1 稱為 1 位 (bit)
- 8 bit = 1 byte (字節(jié)) => 傳輸中最小單位
- 1024 byte = 1 kb
- 1024 kb = 1 mb
- 1024 mb = 1 gb
- 1024 gb = 1 tb
- buffer 中一個元素摔癣,占用內(nèi)存中一個字節(jié)
2. 創(chuàng)建一個指定大小的 Buffer
var buf = Buffer.alloc(10);
// 通過索引扑浸、操作 buf 中的元素
buf[0] = 255;// 將會輸出時轉(zhuǎn)換為十六進(jìn)制
console.log(buf)
// 數(shù)字在控制臺或頁面中輸出一定是十進(jìn)制
console.log(buf[0])
- Buffer 內(nèi)存一旦創(chuàng)建薄坏,不可以修改 => 在底層的操作
3. Buffer 其他操作
-
Buffer.from(str)
將一個字符串傳喚為 Buffer
-
Buffer.alloc(size)
創(chuàng)建指定大小的 Buffer
-
Buffer.allocUnsafe(size)
創(chuàng)建指定大小的Buffer,但可能包含敏感數(shù)據(jù)
-
buf.toString()
將緩沖區(qū)中的主句轉(zhuǎn)換為字符串