在node中,在处理网络协议、操作数据库、处理图片、接收上传文件、在处理网络流和文件的操作中,还需要处理大量二进制数据,js原有的字符串不足以满足这些需求,于是Buffer应运而生;
Buffer对象
Buffer对象类似于数组,它的元素为16进制的两位数,即0到255的数值。
- 不同编码的字符串占有元素的个数不一样,中文字在UTF-8下占用三个元素,字母和半角标符号占一个元素;
- 不同的编码规则(base64、UTF-8),相同的字符占有的元素个数也不一样;
例如:
- Buffer也可以通过length属性得到长度,也可以通过下标访问元素,在构造对象时也很相似:
var bufffer = new Buffer(10)
console.log(buffer.length); // 10
Buffer实例方法
var buf = new Buffer('hello jinghong');
buf.length; // 14
buf.write('Hi jinghong');//11
buf.toString(); //'Hi jinghong'
buf.length; //14这个长度是初始化Buffer时候指定的
buf.write(' jinghongjinghongjinghong', 2, 16); //12
buf.toString(); // 'Hi jinghongji'
var buf = new Buffer('hello world')
buf.length;//11
var buf2 = new Buffer(5);
buf.copy(buf2);//5
buf2.toString();//hello
buf.copy(buf2, 0, 6, 11)//5, buf2是从buf的第6位开始复制到第11位(不包含第11位);buf2是从第1位开始写入;
buf2.toString(); // world