nodeJs的Buffer操作
再nodejs里,很多类是引入模块才能使用,Buffer是一个全局类,他不需要require引入
Buffer有三种构造函数
//1.在构造函数传一个数字,规定buffer的长度。默认全是16进制的0 var bf = new Buffer(size); //2.传一个数组给buffer var bf = new Buffer(array]); //3.传入一个字符串和编码格式,编码格式可以省略 var bf = new Buffer(str,[encoding]);
buffer与字符串的区别
buffer里存的是16进制数字,并且不同的字符的长度是不同的,因此buffer的长度是按照字节长度计算的
var str = '你是谁'; console.log(str.length); //3 var bf = new Buffer(str); console.log(bf.length);//9
字符串有一些操作的方法,indexOf()等,Buffer没有,只有一个取出指定位置处理数据的方法slice,和String的slice一样,并且修改slice取出的数据,buffer也会改变
字符串是不可以改变的,而buffer对象是可以改变的
var str = '你是谁'; var bf = new Buffer(str); console.log(str); //你是谁 console.log(bf); //<Buffer e4 bd a0 e6 98 af e8 b0 81> str[1] = '的'; console.log(str); //你是谁 bf[2] = 0; console.log(bf); //<Buffer e4 bd 00 e6 98 af e8 b0 81>
buffer转换为字符串toString()
var bf = new Buffer('你是谁'); console.log(bf.toString('utf8',3)); //有三个参数都是可选的,第一个参数指定编码格式,第二个和第三个是起始位置和终止位置
buffer的write方法
var bf = new Buffer('你是谁'); bf.write('的',3,3,'utf8'); console.log(bf.toString()); //有四个参数,1是写入的字符串,2,3是要写入的起始位置和终止位置,4是编码格式
buffer与json的互换
var bf = new Buffer('你是谁'); json = JSON.stringify(bf); console.log(json); //转换为字符串 var arr = JSON.parse(json); console.log(arr); //转换为对象 var copy = new Buffer(arr); console.log(copy.toString()); //还原
buffer的复制copy
var bf = new Buffer('你是谁'); console.log(bf); var copyBf = new Buffer('我'); console.log(copyBf); //把bf复制到copyBf里,第二个参数是从copyBf的那个位置开始,第三个参数是从bf的那个位置开始,第四个是bf的那个位置结束,不包括最后一个 bf.copy(copyBf,1,1,3); console.log(copyBf);
buffer的类方法
//1.isBuffer var bf = '你是谁'; console.log(Buffer.isBuffer(bf)); //2.byteLength指定字符串的字节长度 var str = '你是谁'; console.log(Buffer.byteLength(str)); //3.concat几个Buffer连接,返回一个新的Buffer,参数有俩,第一个数组,要连接的buffer数组,第二个是设置新buffer的长度 console.log(Buffer.concat([new Buffer(3),new Buffer('123')],2)); //4.isEncoding判断是不是有效的编码格式字符串 var str1 = 'utf8'; var str2 = 'cher'; console.log(Buffer.isEncoding(str1)); //true console.log(Buffer.isEncoding(str2)); //false