Buffer簡單理解及常用方法介紹

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)換回原來的二進制格式。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容