Buffer 处理二进制数据
说明
Buffer
是 nodeJS 处理二进制数据的一个接口,是 Node 提供的原生全局对象,不需要require
,他是一个构造函数,生成的实例代表V8
引擎分配的一块内存,是一个类似数组的对象,成员都为0 到 255 的对象
参考
类方法
最新版本(v6.0.0废弃),已经不建议使用
new Buffer()
创建实例
1. Buffer.alloc()
创建一个大小指定字节的 buffer
- 1)size: 指定大小(字节)
- 2)fill:可选,填充内容,默认填充 0
- 3)encoding: 可选,编码
const buf = Buffer.alloc(6, 'test', 'utf-8');
console.log(buf); // <Buffer 74 65 73 74 74 65>
2. Buffer.allocUnsafe()
以这种方式创建的 Buffer 实例,但是底层内存未初始化,新建的Buffer 内容是未知的
const buf = Buffer.allocUnsafe(10);
buf.fill(0);
console.log(buf);
3. Buffer.compare(buf1, buf2)
比较两个 buffer
const buf1 = Buffer.alloc(6, 'test', 'utf-8');
const buf2 = Buffer.alloc(6, 'fff', 'utf-8');
console.log(Buffer.compare(buf1, buf2)); // 1|-1
4. Buffer.from()
同样是创建 buffer
const buf = Buffer.from('this is buffer');
console.log(buf.toString()); // this is buffer
console.log(buf.toString('base64')); //dGhpcyBpcyBidWZmZXI=
5. Buffer.isBuffer
判断一个值是不是 buffer
const buf = Buffer.from('this is buffer');
console.log(Buffer.isBuffer(buf)); // true
console.log(Buffer.isBuffer(['00', '00'])); //false
6. Buffer.isEncoding()
表示 buffer 是否是支持某个字符编码
Buffer.isEncoding('utf-8'); // true
7. Buffer.byteLength()
返回字符串实际占用的字节长度
Buffer.byteLength('this is test', 'utf-8'); // 12
8. Buffer.concat()
buffer 合并
var i1 = new Buffer('Hello');
var i2 = new Buffer(' ');
var i3 = new Buffer('World');
Buffer.concat([i1, i2, i3]).toString() // 'Hello World'
实例方法
1. write()
向指定 buffer 写入数据
- 1)string: 要写入的内容
- 2)offset: 可选,起始位置
- 3)length: 可选,要写入的字节数
- 4)encoding: 编码
const buf = Buffer.alloc(20);
buf.write('this is test');
console.log(buf.toString()); // 'this is test'
2. slice()
返回从原对象上切割下的 buffer 实例
- 1)start 起始位置
- 2)end 结束位置
const buf = new Buffer('just some data');
const chunk = buf.slice(5, 9);
chunk.toString(); // "some"
3. toString()
将Buffer实例,按照指定编码(默认为utf8)转为字符串
- 1)encoding: 编码
- 2)start:起始位置
- 3)end : 结束位置
const buf = Buffer.alloc(20);
buf.write('this is test');
console.log(buf.toString('utf-8', 1, 6)); // his i
4. toJSON()
返回 buf 的 JSON 格式
const buf = Buffer.from('test');
console.log(buf.toJSON()); // { type: 'Buffer', data: [ 116, 101, 115, 116 ] }
5. buf.compare()
实例方法,比较 buffer
const buf1 = Buffer.from('ABC');
const buf2 = Buffer.from('BCD');
console.log(buf1.compare(buf1)); // 输出: 0
console.log(buf1.compare(buf2)); // 输出: -1