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éstconsole.log(buf2.toString());// 打印: this is a téstconsole.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”);
