首页 > 代码库 > node.js的Buffer类

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 - 数字, 可选, 默认: 0
end - 数字, 可选, 默认: 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类