node.js的Buffer类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js的Buffer类相关的知识,希望对你有一定的参考价值。
1、创建
创建一个长度为256的Buffer实例:var buf = new Buffer(256);
创建一个数组:var buf = new Buffer([10, 20, 30, 40, 50]);
创建一个字符串:var buf = new Buffer("12345", "utf-8");utf-8为编码方式,还有"ascii", "utf8", "utf16le", "ucs2", "base64" 和 "hex",可选。
2、写入缓存区和从缓存区读取数据:
2.1、写入使用write函数:
buf.write(string[, offset[, length]][, encoding]).例:buf.write("12345");
string - 写入缓冲区的字符串。offset - 缓冲区开始写入的索引值,默认为 0 。length - 写入的字节数,默认为 buffer.lengthencoding - 使用的编码。默认为 ‘utf8‘ 。返回实际写入的大小。如果 buffer 空间不足, 则只会写入部分字符串。
2.2、读取使用函数toString:
buf.toString([encoding[, start[, end]]]) 例:console.log( buf.toString(‘12345‘,0,5));
encoding - 使用的编码。默认为 ‘utf8‘ 。start - 指定开始读取的索引位置,默认为 0。end - 结束位置,默认为缓冲区的末尾。解码缓冲区数据并使用指定的编码返回字符串。
2.3、代码:
var buf = new Buffer(256);
buf.write("123456");
console.log(buf.toString(‘utf-8‘,0,5));
输出:12345
3、缓存区操作:
3.1、缓存区合并:
Buffer.concat(list[, totalLength])
list - 用于合并的 Buffer 对象数组列表。totalLength - 指定合并后Buffer对象的总长度。
例:
var buf1 = new Buffer(‘hello ‘);
var buf2 = new Buffer(‘world‘);
var buf3 = Buffer.concat([buf1,buf2]);
console.log("buf3 内容: " + buf3.toString());
输出:buf3 内容:hello world
3.2、缓存区比较:
buf.compare(otherBuffer);
otherBuffer - 与 buf 对象比较的另外一个 Buffer 对象。返回一个数字,表示 buf 在 otherBuffer 之前,之后或相同。
例:
var buf1 = new Buffer(‘123‘);
var buf2 = new Buffer(‘456‘);
var result = buf1.compare(buf2);
if(result < 0) {
console.log(buf1 + " 在 " + buf2 + "之前");
}else if(result == 0){
console.log(buf1 + " 与 " + buf2 + "相同");
}else {
console.log(buf1 + " 在 " + buf2 + "之后");
}
输出:123在456之前
3.3、拷贝:
buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
targetBuffer - 要拷贝的 Buffer 对象。targetStart - 数字, 可选, 默认: 0sourceStart - 数字, 可选, 默认: 0sourceEnd - 数字, 可选, 默认: buffer.length
例:
var buf1 = new Buffer(‘123‘); var buf2 = new Buffer(‘456‘); buf1.copy(buf2);//把buf1内的数据拷贝给buf2
console.log("buf1 content: " + buf1.toString());
console.log("buf2 content: " + buf2.toString());
输出:123 123
3.4、剪切:
buf.slice([start[, end]])
start - 数字, 可选, 默认: 0end - 数字, 可选, 默认: buffer.length返回一个新的缓冲区,它和旧缓冲区指向同一块内存,但是从索引 start 到 end 的位置剪切。
例:
var buf1 = new Buffer(‘123456‘);
var buf2 = buf1.slice(0,2);
console.log("buf2 content: " + buf2.toString());
输出:12
以上是关于node.js的Buffer类的主要内容,如果未能解决你的问题,请参考以下文章