Buffer 緩衝區node
雖然 JavaScript 支持未操做,可是並無 二進制數據 的原生程序員
node 引入了 Buffer 類,用於操做二進制數據數組
是 V8 引擎的擴展,其實是對內存的直接分配安全
每一個元素大小是 1 字節網絡
建立了一個 Buffer 後,它的大小就固定了
性能
一旦你把內容複製到一個 Buffer 後,它就會以二進制的形式存儲起來。spa
若是你須要添加更多的數據,就必須把 老的 Buffer 複製到一個更大的 Buffer 中3d
這是爲了性能而犧牲了一些程序員的開發便利code
計算機的工做原理是操做「開」和「關」狀態。blog
由於只有這樣兩種狀態,因此咱們稱此爲二元狀態直接操做二進制一般是最快的方法。
在網絡協議中,一般會指定一些字符來傳達信息
好比用固定位置上的比特來表示特殊的含義
在 DNS 請求中,頭兩個字節表示的數字是事務 ID,下一個字節的每一個比特都是獨立使用的,
每一位表示了在這個請求中是否使用 DNS 的某個功能
1. 基本使用
能夠使用 3 種參數
let aColor = new Buffer([255,0,149]); // <Buffer ff 00 95>
aBuf.length
var cBuf = Buffer.allocUnsafe(10);
cBuf.fill(0);
var bufStr = Buffer.from('Hello Bat-Man');
// <Buffer 48 65 6c 6c 6f 20 42 61 74 2d 4d 61 6e>
一箇中文佔用 3 個字節
var hanZi = Buffer.from('綠巨人');
// <Buffer e7 bb bf e5 b7 a8 e4 ba ba>
var strBuf = bufStr.toString();
// 'haha'
5
5
5
5
5
5
5
5
5
5
55
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5