【nodejs】Buffer(缓冲区)(笔记)

本文深入讲解了Node.js中Buffer类的使用方法,包括Buffer的创建、写入、读取、转换、合并、比较、拷贝和裁剪等功能,以及支持的各种字符编码。

Buffer类是随Node内核一起发布的核心库。

Buffer库为Node.js带来了一众存储原始数据的方法,可以让Node.js处理二进制数据。

一个Buffer实例类似于一个整数数组,但它对应V8堆内存之外的一块原始内存。


Buffer创建方法:

1)Buffer.alloc(size,[fill[,encoding]]):
返回一个指定大小的Buffer实例,没有fill的话默认用0填充。

2)Buffer.allocUnsafe(size):
返回一个指定大小的Buffer实例,但是不会被初始化,可能包含敏感信息。

3)Buffer.from(array):
返回一个array的值初始化的新的Buffer实例(传入的array值只能是数字,不然就会被0覆盖掉)。

4)Buffer.from(arrayBuffer[,byteOffset[,length]]):
返回一个新建的与给定的ArrayBuffer共享同一内存的Buffer。

5)Buffer.from(buffer):
复制传入的Buffer实例的数据,并返回一个新的Buffer实例。

6)Buffer.from(string[,encoding]):
返回一个呗string的值初始化的新的Buffer实例


Node.js目前支持的字符编码包括:

1)ascii
–支持7位ASCII数据。

2)utf-8
–多字节编码的Unicode字符。

3)utf16le
–2或4个字节,小字节序编码的Unicode字符。

4)ucs2
–utf16le的别名。

5)base64

6)latin1
–一种把Buffer编码成一字节编码的字符串的方式。

7)binary
–latin1的别名。

8)hex
–将每个字节编码为两个十六进制字符


Buffer写入node缓冲区的语法如下:

buf.write(string[,offset[,length]][,encoding])

参数介绍:
1)string:写入缓冲区的字符串

2)offsetL缓冲区开始写入的索引值,默认为0

3)length:写入的字节数,默认为buffer.length

4)encoding:使用的编码。默认为’utf-8’

返回值为实际写入的大小,若是buffer空间不足,则只会写入部分字符串。

Buffer读取数据的语法如下:

buf.toString([encoding[,start[,end]]])

参数介绍:
1)encoding:使用的编码。默认为’utf-8’。

2)start:指定开始读取的索引位置,默认为0。

3)end:结束为止,默认为缓冲区的末尾。


将Buffer转换为Json对象
语法:

buf.toJson()

缓冲区合并
语法:Buffer.concat(list,[,totalLength])

参数介绍:
1)list:用于合并的Buffer对象数组列表

2)totalLength:指定合并后Buffer对象的总长度

返回值:返回一个多个成员合并的新Buffer对象。


缓冲区比较
语法:buf.compare(otherBuffer);

参数介绍:
1)otherBuffer:与buf对象比较的另一个Buffer对象。

返回值:返回一个数字,表示buf在otherBuffer之前,之后或相同。


拷贝缓冲区

语法:
buf.copy(targetBuffer[,targetStart[,sourceStart[,sourceEnd]]])

参数介绍:

1)targetBuffer:要拷贝的Buffer对象

2)targetStart:数字,可选,默认为0

3)sourceStart:数字,可选,默认为0

4)sourceEnd:数字,可选,默认为Buffer.length

没有返回值


缓冲区裁剪

语法:buf.slice([start,[,end]])

参数介绍:

1)start:数字,可选,默认为0

2)end:数字,节选,默认为buffer.length

返回一个新的缓冲区,它和旧缓冲区指向同一块内存,但是是从索引的start到end的位置剪裁。


缓冲区长度

语法:buf.length

返回Buffer对象所占的内存长度


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值