nodeJS

来源:互联网 发布:前端防止重复提交知乎 编辑:程序博客网 时间:2024/06/13 10:35

Buffer 处理二进制数据

说明

Buffer 是 nodeJS 处理二进制数据的一个接口,是 Node 提供的原生全局对象,不需要 require,他是一个构造函数,生成的实例代表 V8 引擎分配的一块内存,是一个类似数组的对象,成员都为0 到 255 的对象

参考

  • Node.js 文档
  • JavaScript 标准参考教程 Node.js

类方法

最新版本(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
原创粉丝点击