Node.js Buffer库基础函数

缓冲区
JS本身并没有二进制数据类型,所以需要用buffer库来处理二进制数据

使用:

const buf = Buffer.from('runoob','ascii');
//输出72756e6f6f62
console.log(buf.toString('hex'));
//输出base64数据
console.log(buf.toString('base64'));

写入缓冲区

buf.write(string[, offset[, length]][, encoding])

● string为字符串
● offset为索引值
● length为写入的字节数
● encoding使用的编码
● 函数返回的值为实际写入的大小,空间不足只会返回部分写入的字符串大小

buf = Buffer.alloc(256);//指定一个缓冲区的大小
len = buf.write('www.runoob.com');

读取缓冲区

buf.toString([encoding[,start[,end]]])

● encoding使用的编码,默认utf-8
● start指定开始读取的索引位置,默认0
● end结束位置,默认为缓冲区末尾
● 函数返回值=解码缓冲区数据并使用指定的编码返回字符串
实例:

buf = Buffer.alloc(26);
for(var i = 0;i<26;i++)buf[i] = i+97;
console.log(buf.toString('ascii'));//输出26个字母

Buffer转换为Json对象

buf.toJSON();

缓冲区合并

Buffer.concat(list[,totalLength])

● list用于合并的Buffer对象数组列表
● totalLength合并后对象的总长度
● 函数返回一个新buffer对象

var buffer1 = Buffer.from(('1234'));
var buffer2 = Buffer.from(('www'));
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log(buffer3.toString());//1234www

缓冲区比较

buf.compare(otherBuffer);
var buffer1 = Buffer.from('ABC');
var buffer2 = Buffer.from('ABCD');
var result = buffer1.compare(buffer2);

if(result < 0) {
   console.log(buffer1 + " 在 " + buffer2 + "之前");
}else if(result == 0){
   console.log(buffer1 + " 与 " + buffer2 + "相同");
}else {
   console.log(buffer1 + " 在 " + buffer2 + "之后");
}//ABC在ABCD之前

返回一个数字,倘若数字小于0则在比较数字之前。其他情况举反
拷贝缓冲区

buf.copy(targetBuffer[,targetStart[,sourceStart[,sourceEnd]]])

● targetBuffer要拷贝的对象
● targetStart数字可选,默认0
● sourceStart数字可选,0
● sourceEnd数字可选,0
● 无返回值

var buf1 = Buffer.from('abcdefghijk');
var buf2 = Buffer.from('RUNOOB');
buf2.copy(buf1,2);//将buf2插入到buf1上
console.log(buf1.toString());//abRUNOOBijk

裁剪缓冲区

buf.slice([start[,end]])

● start默认0
● end默认buffer.length

上一篇:myod


下一篇:16、New IO