更新时间:2021年12月10日17时20分 来源:传智教育 浏览次数:
下面开始介绍用来存储二进制数据的Buffer 缓冲区。
缓冲区是在内容中操作数据的容器,Node.js中的Buffer缓冲区模块,支持开发者在缓冲区结构中创建、读取、写入和操作二进制数据,该模块是全局性的,所以在使用时不需要使用require()函数来加载。
在Node.js手册中查找到Buffer的创建方式,具体如下:
new Buffer(array)、 new Buffer(buffer)、new Buffer(arrayBuffer[, byteOffset [, length]])、new Buffer(size)、 new Buffer(str[, encoding])。
从上述方式中可以看出,Buffer()构造函数用于创建Buffer对象,其中的参数可以是字节(size)、数组(array)、buffer对象、字符串(str)等。
使用Buffer自己创建一个内存空间,单位为字节,语法如下:
var buf = new Buffer(size);
在上述语法中,size代表字节大小,例如创建了5个字节的内存空间,就向Buffer()构造函数中传递参数5。
通过传入数组方式创建Buffer实例,语法如下:
var buf = new Buffer([10, 20, 30, 40, 50]);
在上述语法中参数为自定义数组。
var buf = new Buffer("hello", "utf-8");
在上述方法中,"hello"为JavaScript字符串,Buffer和JavaScript字符串对象之间的转换需要显式地调用编码方法来完成,“utf-8”为Buffer默认支持的编码方式,可以省略。
除utf-8编码外,Buffer同样支持以下编码:
(1)ascii:仅用于7位ASCIⅡ字符。这种编码方法非常快,并且会丢弃高位数据。
(2)utf16le:两个字节,UTF-16LE代表Unicode转换格式——16位小端字节序。
(3)ucs2:两个字节,以小尾字节序(Little-Endian)编码的 Unicode 字符。它只能对BMP(基本多文种平面,U+0000~U+FFFF)范围内的字符编码。
(4)base64:Base64字符串编码,Base64是网络上最常见的用于传输8字节代码的编码方式之一。
(5)hex:Hex字符串编码,Hex全称是Intel HEX。Hex文件是由一行行符合Intel,HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码或常量数据的十六进制编码数字组成。