Buffer 类是作为 Node.js API 的一部分引入的,用于在 TCP 流、文件系统操作、以及其他上下文中与八位字节流进行交互。

Buffer 类的实例类似于从 0255 (这里的0到255有可能是二进制的00000000~11111111)之间的整数数组(其他整数会通过 & 255 操作强制转换到此范围),但对应于 V8 堆外部的固定大小的原始内存分配。 Buffer 的大小在创建时确定,且无法更改。

Buffer 类在全局作用域中,因此无需使用 require('buffer').Buffer

api

Buffer.from(string[, encoding])

  • encoding默认值是utf8
  • 创建一个buffer
  1. const buf1 = Buffer.from('this is a tést');
  2. const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
  3. console.log(buf1.toString());
  4. // 打印: this is a tést
  5. console.log(buf2.toString());
  6. // 打印: this is a tést
  7. console.log(buf1.toString('ascii'));
  8. // 打印: this is a tC)st

Buffer.from(array: ) 重载

  1. const buf1 = Buffer.from([1,2,3]);
  2. const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]); // 十六进制

Buffer.alloc(size:number[,val: string|number|Buffer|Uint8Array[,encoding]]);

  • encoding默认值是utf8
  • 创建一个buffer

    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”);