缓冲区
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