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