Buffer在nodejs中被称为缓存区。
JavaScript语言中,拥有存储字符串的数据类型,但是当我们想要存储的是二进制数据的时候,就不知道如何在内存中表达了。在Nodejs中,Buffer对象就是用来解决这个问题的。
字符编码
Buffer默认的字符编码是 “utf8”。
其他的编码方式还有:”base64”、”ascli”等等。
//一个简单的示例:
const buf = Buffer.from("hello");
console.log(buf.toString());
Buffer的创建
- Buffer.alloc(10);代表创建了长度是10的Buffer实例,并且都默认为0。
- Buffer.alloc(10, 2);代表创建了长度是10的Buffer实例,并且都被2填充。
- Buffer.allocUnsafe();最快的创建Buffer方式,但是它的值还是不安全的,需要重新写入数据。
- Buffer.from([1,2,3])
- Buffer.from(‘hello world’);
Buffer写入缓冲区
语法:buf.write(value);
var buf = Buffer.alloc(256);
var len = buf.write('mapbar_front');
Buffer的读取
语法:buf.toString();
const buf = Buffer.from('hello');
console.log(buf.toString());
Buffer转化为JSON对象
语法:buf.toJSON();
const buf = Buffer.from('hello');
console.log(buf.toJSON());
缓冲区合并
语法:buf = Buffer.concat([buf1, buf2]);
var buffer1 = Buffer.from('hello');
var buffer2 = Buffer.from('world');
var buf = Buffer.concat([buffer1, buffer2]);
console.log(buf.toString());
缓冲区比较
var result = buffer1.compare(buffer1);
console.log(result);
比较的结果是一个数字。0代表两个buffer是相等的。
缓冲区裁剪和缓冲区长度
const my = buffer1.slice(0,2);
console.log(my.toString());
console.log(my.length);