Buffer 介紹
javascript 中對數(shù)據(jù)處理都是以字符串的形式,而對于二進制數(shù)據(jù)就不便于處理,所以 Buffer 便是用于讀取或操作二進制數(shù)據(jù)的對象。
通俗來說Buffer其實就是處理數(shù)據(jù)的方法,這點在官網(wǎng)文檔里解釋的很詳細(xì)。
Buffer 是內(nèi)存拷貝,而不是內(nèi)存共享。
Buffer 占用內(nèi)存被解釋為一個數(shù)組,而不是字節(jié)數(shù)組。比如,new Uint32Array(new Buffer([1,2,3,4])) 創(chuàng)建了4個 Uint32Array,它的成員為 [1,2,3,4] ,而不是[0x1020304] 或 [0x4030201]。
注意:Node.js v0.8 只是簡單的引用了array.buffer里的 buffer ,而不是克隆(cloning)。
介紹一個高效的方法,ArrayBuffer#slice() 拷貝了一份切片,而 Buffer#slice() 新建了一份。
類: Buffer
Buffer 類是全局變量類型,用來直接處理2進制數(shù)據(jù)。 它能夠使用多種方式構(gòu)建
Buffer的部分方法
Buffer.from(array) 返回一個新的 Buffer,其中包含提供的八位字節(jié)數(shù)組的副本。
Buffer.from(arrayBuffer[, byteOffset [, length]]) 返回一個新的 Buffer,它與給定的 ArrayBuffer 共享相同的已分配內(nèi)存。
Buffer.from(buffer) 返回一個新的 Buffer,其中包含給定 Buffer 的內(nèi)容的副本。
Buffer.from(string[, encoding]) 返回一個新的 Buffer,其中包含提供的字符串的副本。
Buffer.alloc(size[, fill[, encoding]]) 返回一個指定大小的新建的的已初始化的 Buffer。 此方法比 Buffer.allocUnsafe(size) 慢,但能確保新創(chuàng)建的 Buffer 實例永遠(yuǎn)不會包含可能敏感的舊數(shù)據(jù)。
Buffer.allocUnsafe(size) 和 Buffer.allocUnsafeSlow(size) 分別返回一個指定大小的新建的未初始化的 Buffer。 由于 Buffer 是未初始化的,因此分配的內(nèi)存片段可能包含敏感的舊數(shù)據(jù)。
Buffer可接收的的字符編碼
1.ascii——ASCI,僅適用于ASCII字符集。
2.utf8——UTF-8,這種可變寬編碼適用于Unicode字符集的任何字符,它已經(jīng)成了Web世界的首選編碼,也是Node的默認(rèn)編碼類型。
3.base64——Base64,這種編碼基于64個可打印ASCII字符來表示二進制數(shù)據(jù),Base64通常用于在字符文檔內(nèi)嵌入可以被轉(zhuǎn)化成字符串的二進制數(shù)據(jù),在需要時又可以完整無損的轉(zhuǎn)換回原來的二進制格式。