buffer
2019-10-28 本文已影响0人
hanxianshe_9530
所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存。主要用于操作二进制数据流,其用法与数组非常相似。
当字符串数据被存储入 Buffer 实例,或从 Buffer 实例中被提取时,可以指定一个字符编码。
const buf = Buffer.from('hello world', 'ascii');
console.log(buf.toString('hex'));
// 打印: 68656c6c6f20776f726c64
console.log(buf.toString('base64'));
// 打印: aGVsbG8gd29ybGQ=
console.log(Buffer.from('fhqwhgads', 'ascii'));
// 打印: <Buffer 66 68 71 77 68 67 61 64 73>
console.log(Buffer.from('fhqwhgads', 'utf16le'));
// 打印: <Buffer 66 00 68 00 71 00 77 00 68 00 67 00 61 00 64 00 73 00>
JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一个与String对等的全局构造函数Buffer来提供对二进制数据的操作。
Bufffer是一个全局变量,因此无需使用require(‘buffer’).Buffer。
Node.js 当前支持的部分字符编码有:
-
'ascii'
- 仅适用于 7 位 ASCII 数据。此编码速度很快,如果设置则会剥离高位。 -
'utf8'
- 多字节编码的 Unicode 字符。许多网页和其他文档格式都使用 UTF-8。 -
'base64'
- Base64 编码。 -
'hex'
- 将每个字节编码成两个十六进制的字符。
为了使 Buffer
实例的创建更可靠且更不容易出错,各种形式的 new Buffer()
构造函数都已被弃用,且改为单独的 Buffer.from()
,Buffer.alloc()
和 Buffer.allocUnsafe()
方法。
Buffer 与迭代器
Buffer 实例可以使用 for..of 语法进行迭代:
const buf = Buffer.from([1, 2, 3]);
for (const b of buf) {
console.log(b);
}
// 打印:
// 1
// 2
// 3
此外,buf.values()
、buf.keys()
、和 buf.entries()
方法也可用于创建迭代器。