nodeJS - 1 - Buffer处理二进制数据

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值