文件系统下的——Buffer缓冲区

Buffer是Node.js中用于处理二进制数据的模块,它像数组一样操作二进制数据,尤其在处理音频、视频、图片等非文本数据时至关重要。Buffer对象可以直接创建并使用,例如通过Buffer.from()方法。Buffer大小是固定的,一旦创建不能改变,它对底层内存进行直接操作。Buffer.alloc()会清除内存数据,而Buffer.allocUnsafe()则可能保留原有数据,存在安全隐患。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Buffer的结构和数组很像(它的元素为16进制的两位数),操作的方法也和数组类似

在客户端与服务器交流的过程中,服务器不仅会返回字符串,还会返回音频视频图片等形式(通常称为:二进制文件),js原生的数组并不能满足这些要求,而 Buffer 就是专门用来存储这些数据的。存储时都是二进制,显示时以16进制形式显示

客户端发送的数据都是2进制,存放在 buffer 中,发送回客户端时也是2进制,所以称为缓冲区

Buffer 是 Node 中扩充的对象,可以直接使用

———————————————————————————————————————————

var 变量名=Buffer.from(所存内容);

之后打印出来的 <Buffer 68 65 6c 6c 6f> 这些即为 hello 的16进制码

利用 toStrng 转换为字符串

toStrng 可以将缓冲区中的数据转换为字符串

 

在这里,buffer 的大小是根据 字符串所占字节的多少来判定的

-------------------------------------------------------------------------------------------------------------------------------- 

创建指定大小的 buffer

使用 Buffer.alloc()或  Buffer.allocUnsafe()这两种方法

 这里我们直接打印 buf

 可以看到 buf 包含10个00,因为长度定义为10,00是因为这是空的 buf 还未赋值

通过索引来操作 buffer 中的元素

PS:因为 buffer 中的元素显示的时候为 16 进制,所以30变成了1e

buffer中每个值最大不能超过 255,否则转16进制时会自动舍弃一部分从而变更

当然也可以直接往里添加16进制【采用0x开头】

PS:16进制最大到f,所以 f 之后的字母都不可以 0x 

buffer 里面的空间都是连续的,大小一旦确定则不能更改【buffer 实际上是对底层内存的直接操作。例如 Buffer.alloc,alloc的意思是分配,它的实际意思就是在内存中分配字节,来存放 buffer ,所以实际上每一个 buffer 在底层都对应着内存中的每一块区域】

---------------------------------------------------------------------------------------------------------------------------------

读取 buffer 中的元素

 本应该打印 dd 变成了 221,涉及到知识点

只要数字在控制台或页面中输出一定是10进制,但是利用 .toString() 方法可以更改进制

Buffer.alloc 分配空间时会清除内存中其数据

Buffer.allocUnsafe 分配时不会清除【别人使用过的内存可能会被原封不动拿过来使用,因此存在安全隐患】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值