03-Buffer

1. Buffer创建

  • JavaScript 语言自身只有字符串数据类型,没有二进制数据类型;
  • 但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

1-1. alloc()

let buffer = Buffer.alloc(10);
console.log(buffer);

1-2. from()

let buffer = Buffer.from("大家好");
console.log(buffer);

2. Buffer中的方法

2-1. toString()

  • 将十六进制转换为字符串
let buffer = Buffer.from("大家好");
console.log(buffer.toString());

2-2. concat()

  • 连接两个Buffer
let buffer1 = Buffer.from([0xe5, 0xa4, 0xa7, 0xe5]);
let buffer2 = Buffer.from([0xae, 0xb6, 0xe5, 0xa5, 0xbd]);
let buffer = Buffer.concat([buffer1, buffer2]);
console.log(buffer.toString());

2-3. string_decoder()

  • 它的特殊之处在于,当传入的buffer不完整(比如三个字节的字符,只传入了两个),内部会维护一个internal buffer将不完整的字节cache住,等到使用者再次调用stringDecoder.write(buffer)传入剩余的字节,来拼成完整的字符;
  • 这样可以有效避免buffer不完整带来的错误,对于很多场景,比如网络请求中的包体解析等,非常有用;
let { StringDecoder } = require("string_decoder");
let buffer1 = Buffer.from([0xe5, 0xa4, 0xa7, 0xe5]);
let buffer2 = Buffer.from([0xae, 0xb6, 0xe5, 0xa5, 0xbd]);
let decoder = new StringDecoder();
let res1 = decoder.write(buffer1);
let res2 = decoder.write(buffer2);
console.log(res1);
console.log(res2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值