Node.js Buffer(缓冲区):专门存放二进制数据缓冲区
(1)Buffer与字符编码
创建Buffer对象: const buf = Buffer.from ( ‘runoob’, ‘ascii’ );
Node.js 目前支持的字符编码包括:
ascii - 仅支持 7 位 ASCII 数据。如果设置去掉高位的话,这种编码是非常快的。
utf8 - 多字节编码的 Unicode 字符。许多网页和其他文档格式都使用 UTF-8 。
utf16le - 2 或 4 个字节,小字节序编码的 Unicode 字符。支持代理对(U+10000 至 U+10FFFF)。
ucs2 - utf16le 的别名。
base64 - Base64 编码。
latin1 - 一种把 Buffer 编码成一字节编码的字符串的方式。
binary - latin1 的别名。
hex - 将每个字节编码为两个十六进制字符。
(2)写入缓存区语法:buf.write(string[, offset[, length]][, encoding]) 返回值实际写入的大小
参数描述如下:
string - 写入缓冲区的字符串。
offset - 缓冲区开始写入的索引值,默认为 0 。
length - 写入的字节数,默认为 buffer.length
encoding - 使用的编码。默认为 ‘utf8’ 。
(3)将Buffer转成JSON: buf.toJSON 或 JSON.stringify() 返回JSON对象
(4)缓冲区合并:Buffer.concat(list[, totalLength]) 返回一个或者多个成员合并的新Buffer对象
参数描述如下:
list - 用于合并的 Buffer 对象数组列表。
totalLength - 指定合并后Buffer对象的总长度。
(5)缓冲区比较:buf.compare(otherBuffer); 返回一个数字,表示 buf 在 otherBuffer 之前,之后或相同。
参数描述如下:
otherBuffer - 与 buf 对象比较的另外一个 Buffer 对象。
(6)拷贝缓冲区:buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
参数描述如下:
targetBuffer - 要拷贝的 Buffer 对象。
targetStart - 数字, 可选, 默认: 0
sourceStart - 数字, 可选, 默认: 0
sourceEnd - 数字, 可选, 默认: buffer.length
实例:
var buf1 = Buffer.from(‘abcdefghijkl’);
var buf2 = Buffer.from(‘RUNOOB’);
//将 buf2 插入到 buf1 指定位置上
buf2.copy(buf1, 2);
console.log(buf1.toString());
(7)缓冲区裁剪:buf.slice([start[, end]]) 返回值:返回一个新的缓冲区
参数描述如下:
start: 数字,可选默认是0
end: 数字,可选 默认是buffer.length
实例:
var buf = Buffer.from(‘abcdefghi’);
var buf1 = buf.slice(2,5);
console.log(‘缓冲区裁剪’ + buf1.toString());
(8)缓冲区长度:buf.length
实例:
var length = buf.length;
console.log(‘缓冲区长度’ + length);