Buffer
类是作为 Node.js API 的一部分引入的,用于在 TCP 流、文件系统操作、以及其他上下文中与八位字节流进行交互。
Buffer
类的实例类似于从 0
到 255
(这里的0到255有可能是二进制的00000000~11111111)之间的整数数组(其他整数会通过 & 255
操作强制转换到此范围),但对应于 V8 堆外部的固定大小的原始内存分配。 Buffer
的大小在创建时确定,且无法更改。
Buffer
类在全局作用域中,因此无需使用 require('buffer').Buffer
。
api
Buffer.from(string[, encoding])
- encoding默认值是utf8
- 创建一个buffer
const buf1 = Buffer.from('this is a tést');
const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
console.log(buf1.toString());
// 打印: this is a tést
console.log(buf2.toString());
// 打印: this is a tést
console.log(buf1.toString('ascii'));
// 打印: this is a tC)st
Buffer.from(array: ) 重载
const buf1 = Buffer.from([1,2,3]);
const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]); // 十六进制
Buffer.alloc(size:number[,val: string|number|Buffer|Uint8Array[,encoding]]);
- encoding默认值是utf8
-
Buffer.allocUnsafe(size:number);
创建一个大小为
size
字节的新Buffer
。 如果size
大于buffer.constants.MAX_LENGTH
或小于 0,则抛出ERR_INVALID_OPT_VALUE
。 如果size
为 0,则创建一个长度为零的Buffer
。- 以这种方式创建的
Buffer
实例的底层内存是未初始化的。 新创建的Buffer
的内容是未知的,可能包含敏感数据。 使用Buffer.alloc()
可以创建以零初始化的Buffer
实例。
buffer.constants.MAX_LENGTH在 32 位的架构上,该值是 (2^30)-1
(~1GB)。 在 64 位的架构上,该值是 (2^31)-1
(~2GB)
buf.fill(value[, offset[, end]][, encoding])
value
| | | 用来填充 buf
的值。offset
开始填充 buf
的偏移量。默认值:0
。end
结束填充 buf
的偏移量(不包含)。默认值:buf.length
。encoding
如果 value
是字符串,则指定value
的字符编码。默认值:'utf8'
。- 返回:
buf
的引用。
例子
var buf1 = Buffer.alloc(2000, 0);
var buf2 = Buffer.allocUnsafe(2000)
buf2.fill(“a”);