Node.js Buffer(缓冲区)

2020-06-17 05:29:54易采站长站整理

for (var i = 0 ; i < 26 ; i++) {
buf[i] = i + 97;
}

console.log( buf.toString('ascii')); // 输出: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5)); //使用 'ascii' 编码, 并输出: abcde
console.log( buf.toString('utf8',0,5)); // 使用 'utf8' 编码, 并输出: abcde
console.log( buf.toString(undefined,0,5)); // 使用默认的 'utf8' 编码, 并输出: abcde

执行以上代码,输出结果为:


$ node main.js
abcdefghijklmnopqrstuvwxyz
abcde
abcde
abcde


将 Buffer 转换为 JSON 对象
语法

将 Node Buffer 转换为 JSON 对象的函数语法格式如下:


buf.toJSON()

当字符串化一个 Buffer 实例时,JSON.stringify() 会隐式地调用该 toJSON()。

返回值

返回 JSON 对象。

实例


const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
const json = JSON.stringify(buf);

// 输出: {"type":"Buffer","data":[1,2,3,4,5]}
console.log(json);

const copy = JSON.parse(json, (key, value) => {
return value && value.type === 'Buffer' ?
Buffer.from(value.data) :
value;
});

// 输出:
console.log(copy);

执行以上代码,输出结果为:


{"type":"Buffer","data":[1,2,3,4,5]}



缓冲区合并

语法

Node 缓冲区合并的语法如下所示:


Buffer.concat(list[, totalLength])

参数

参数描述如下:

list – 用于合并的 Buffer 对象数组列表。

totalLength – 指定合并后Buffer对象的总长度。

返回值

返回一个多个成员合并的新 Buffer 对象。

实例


var buffer1 = Buffer.from(('软件开发网'));
var buffer2 = Buffer.from(('www.mscto.com'));
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 内容: " + buffer3.toString());

执行以上代码,输出结果为:

buffer3 内容: 软件开发网www.mscto.com

缓冲区比较

语法

Node Buffer 比较的函数语法如下所示, 该方法在 Node.js v0.12.2 版本引入:


buf.compare(otherBuffer);

参数

参数描述如下:

otherBuffer – 与 buf 对象比较的另外一个 Buffer 对象。

返回值

返回一个数字,表示 buf