Buffer(缓冲区)
什么是Buffer
因为JavaScript语言自身只有字符串数据类型,没有二进制数据类型,但在处理TCP流或文件流的的时候必须使用二进制数据,所以Node.js中定义了Buffer
类,该类用来创建一个专门存放二进制数据的缓存区;
1. Buffer实例与JavaScript字符串之间的互转
Buffer实例一般用在表示编码字符的序列
let buf = new Buffer('宝宝');
console.log(buf);//e5 ae 9d e5 ae 9d
let buf1 = new Buffer([0xe5, 0xae, 0x9d, 0xe5, 0xae, 0x9d]);//因为是16进制所以前边需要带上0x 否则报错
//所以e5 ae 9d e5 ae 9d就可以转换成宝宝
console.log(buf1.toString());//宝宝
console.log(buf.length);//打印buffer占用的多少个字符空间 6
小结:
通过let buf = new Buffer('宝宝');
打印显式的字符编码(e5 ae 9d e5 ae 9d),在通过let buf1 = new Buffer([0xe5, 0xae, 0x9d, 0xe5, 0xae, 0x9d])
用console.log(buf.toString())
打印就可以实现Buffer实例与普通JavaScript字符串之间进行转换
字符串转buffer:new Buffer('hello');
buffer转字符串:buf.toString()
2. Buffer和对象互转
- 对象转buffer
let buf = new Buffer(JSON.stringify({ name: '宝宝' }))
- buffer转字符串
let str = buf.toString()
- 字符串转对象
JSON.parse(str)
3. concat(拼接)方法
let buf1 = new Buffer('宝宝');
let buf2 = new BUffer('baobao');
let buf3 = Buffer.concat([buf1,buf2]);
console.log(buf3.toSting());//宝宝baobao