更新時間:2021-12-10 來源:黑馬程序員 瀏覽量:
下面開始介紹用來存儲二進制數據的Buffer 緩沖區(qū)。
緩沖區(qū)是在內容中操作數據的容器,Node:.js中的Buffer緩沖區(qū)模塊,支持開發(fā)者在緩沖區(qū)結構中創(chuàng)建、讀取、寫入和操作二進制數據,該模塊是全局性的,所以在使用時不需要使用requireO函數來加載。
在Node.js手冊中查找到Buffer的創(chuàng)建方式,具體如下:
new Buffer(array)、 new Buffer(buffer)、new Buffer(arrayBuffer[, byteOffset [,
length]])、new Buffer(size)、 new Buffer(str[, encoding])。
從上述方式中可以看出,Buffer()構造函數用于創(chuàng)建Buffer對象,其中的參數可以是字節(jié)(size)、數組(array)、buffer對象、字符串(str)等。
使用Buffer自己創(chuàng)建一個內存空間,單位為字節(jié),語法如下:
var buf = new Buffer(size);
在上述語法中,size代表字節(jié)大小,例如創(chuàng)建了5個字節(jié)的內存空間,就向Buffer()構造函數中傳遞參數5。
通過傳入數組方式創(chuàng)建Buffer實例,語法如下:
var buf = new Buffer([10, 20, 30, 40, 50]);
在上述語法中參數為自定義數組。
var buf = new Buffer("hello", "utf-8");
在上述方法中,"hello"為JavaScript字符串,Buffer和JavaScript字符串對象之間的轉換需要顯式地調用編碼方法來完成,“utf-8”為Buffer默認支持的編碼方式,可以省略。
除utf-8編碼外,Buffer同樣支持以下編碼:
(1)ascii:僅用于7位ASCIⅡ字符。這種編碼方法非???,并且會丟棄高位數據。
(2)utf16le:兩個字節(jié),UTF-16LE代表Unicode轉換格式——16位小端字節(jié)序。
(3)ucs2:兩個字節(jié),以小尾字節(jié)序(Little-Endian)編碼的 Unicode 字符。它只能對BMP(基本多文種平面,U+0000~U+FFFF)范圍內的字符編碼。
(4)base64:Base64字符串編碼,Base64是網絡上最常見的用于傳輸8字節(jié)代碼的編碼方式之一。
(5)hex:Hex字符串編碼,Hex全稱是Intel
HEX。Hex文件是由一行行符合Intel,HEX文件格式的文本所構成的ASCII文本文件。在Intel
HEX文件中,每一行包含一個HEX記錄。這些記錄由對應機器語言碼或常量數據的十六進制編碼數字組成。