Buffer

Buffer

概念

在Node.js中,Buffer是一个非常重要的内置全局对象,Node.js是基于Chrome V8引擎构建的,V8引擎本身不支持处理二进制数据,因此Node.js引入Buffer来弥补这一不足,Buffer中文译为【缓冲区】,是一个类似于Array的对象,用于表示固定长度的字节序列,换句话讲,Buffer就是一段固定长度的内存空间,用于处理二进制数据

特点

  1. Buffer大小固定且无法调整
  2. Buffer性能较好,可以直接对计算机内存进行操作
  3. 每个元素的大小为1字节(byte)

作用

  1. 文件系统操作:读写文件时,文件内容通常以二进制形式存储和传输。
  2. 网络通信:在进行TCP/UDP等网络通信时,数据也是以二进制的形式发送和接收。
  3. 加密解密:加密算法处理的数据通常是二进制格式。
  4. 图片、音频、视频处理:这些多媒体文件的内容是二进制数据。

使用

// 1. alloc
let buf = Buffer.alloc(10); // Buffer是Node的内置模块

// alloc创建的Buffer,每个二进制位都会归零
console.log(buf) // 输出 <Buffer 00 00 00 00 00 00 00 00 00 00>


// 2. allocUnsafe
let buf_2 = Buffer.allocUnsafe(10);

console.log(buf_2) // <Buffer 00 00 00 00 00 00 00 00 00 00>

allocUnsafeallocUnsafe创建的Buffer可能包含旧的内存数据,内存空间其实是可以复用的,所以allocUnsafe的执行速度更快。
以下做一段图示:
A程序执行时,申请了一段内存空间,并且执行完毕,这段内存空间就处于空闲状态。
在这里插入图片描述
B程序在执行时,就可以再次使用这段内存空间。alloc创建Buffer时,会对这段内存中每个二进制位都清零,allocUnsafe并不会对旧数据清零。
在这里插入图片描述

// 3. from
let buf_3 = Buffer.from('hi');
// h 68  i 69就是unicode编码中的数字,转成二进制存在Buffer中
// 68是16进制的表示方式
console.log(buf_3) // <Buffer 68 69>

H在ASCII码表(兼容unicode码表)中是104
在这里插入图片描述
在这里插入图片描述
使用from创建Buffer,还可以传入数组。

// from
let buf_4 = Buffer.from([0x48, 0x65, 0x6c, 0x6c, 0x6f]);
console.log(buf_4) // <Buffer 48 65 6c 6c 6f>
console.log(buf_4.toString('utf8')) // Hello
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值