简介
JavaScript 语言没有读取或操作二进制数据流的机制。 在 Node.js 中,Buffer 类是随 Node 内核一起发布的核心库。Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始数据存储在 Buffer 类的实例中。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。Buffer 类在 Node.js 中是一个全局变量,因此无需使用 require(‘buffer’).Buffer。
(一) Buffer 与字符编码
Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换。
注:在node中一个中文,如果是unicode编码,占2个字符;如果是utf-8则占3个字符;英文都是占一个字符
(二)Buffer常用的方法
// 1、 Buffer.alloc(size,encoding) //创建一个空数据块,也就是一个空的内存地址
// 2、 Buffer.from(string/buffer,encoding)//创建一个数据块并写入值
// 3、 buf.write(string[, offset[, length]][, encoding])//buffer字符串的写入
// 4、 buf.toString([encoding[, start[, end]]]//读取缓存区
// 5、 Buffer.concat(buf1,buf2)//合并缓冲区
// 6、 buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])//拷贝缓冲区,buf被拷贝的
// 7、 buf.slice([start[, end]])//缓冲区截取
// 8、 buf.length;//缓冲区长度