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对象所占的内存长度
本文深入讲解了Node.js中Buffer类的使用方法,包括Buffer的创建、写入、读取、转换、合并、比较、拷贝和裁剪等功能,以及支持的各种字符编码。

1173

被折叠的 条评论
为什么被折叠?



