Node -- Buffer

310 阅读2分钟

一、Buffer 类

Buffer 类是一个全局变量类型,用来直接处理二进制数据的。 它能够使用多种方式构建。

  • buffer.INSPECT_MAX_BYTES:
  • buffer.kMaxLength:
  • buffer.transcode(source, fromEnc, toEnc):
  • buffer.constants:
  • buffer.constants.MAX_LENGTH: 单个Buffer实例允许的最大量度。
  • buffer.constants.MAX_STRING_LENGTH: 单个string实例允许的最大长度。

类属性

  • Buffer.poolSize:

类方法

  • Buffer.alloc(size[, fill[, encoding]]):能确保新创建的 Buffer 实例的内容永远不会包含敏感的数据
  • Buffer.allocUnsafe(size): 新创建的 Buffer 的内容是未知的,且可能包含敏感数据。 可以使用 buf.fill(0)初始化 Buffer 实例为0
  • Buffer.allocUnsafeSlow(size):创建一个非内存池的 Buffer 实例并拷贝相关的比特位出来,只用作开发人员已经在其应用程序中观察到过度的内存之后的最后手段 =======================
  • Buffer.from(array):通过一个八位字节的 array 创建一个新的 Buffer 。
  • Buffer.from(arrayBuffer[, byteOffset[, length]]):新建的 Buffer 会共享同一内存
  • Buffer.from(buffer)
  • Buffer.from(object[, offsetOrEncoding[, length]])
  • Buffer.from(string[, encoding])

========================

  • Buffer.byteLength(string[, encoding]):返回一个字符串的实际字节长度。

  • Buffer.compare(buf1, buf2):比较 buf1 和 buf2 ,通常用于 Buffer 实例数组的排序。

  • Buffer.concat(list[, totalLength]):返回一个合并了 list 中所有 Buffer 实例的新建的 Buffer 。

  • Buffer.isBuffer(obj)

  • Buffer.isEncoding(encoding):如果 encoding 是支持的字符编码,则返回 true,否则返回 false。

属性

  • buf.buffer: buffer 属性指向创建该 Buffer 的底层的 ArrayBuffer 对象。

  • buf.length:

方法

  • buf[index]: 索引操作符 [index] 可用于获取或设置 buf 中指定 index 位置的八位字节

  • buf.compare(target[, targetStart[, targetEnd[, sourceStart[, sourceEnd]]]]):

  • buf.equals(otherBuffer): 如果 buf 与 otherBuffer 具有完全相同的字节,则返回 true,否则返回 false。

  • buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]]):

  • buf.entries(): 从 buf 的内容中,创建并返回一个 [index, byte] 形式的迭代器。

const buf = Buffer.from('buffer');

// 输出:
//   [0, 98]
//   [1, 117]
//   [2, 102]
//   [3, 102]
//   [4, 101]
//   [5, 114]
for (const pair of buf.entries()) {
  console.log(pair);
}
  • buf.fill(value[, offset[, end]][, encoding]):如果未指定 offset 和 end,则填充整个 buf

  • buf.includes(value[, byteOffset][, encoding]):相当于 buf.indexOf() !== -1

  • buf.indexOf(value[, byteOffset][, encoding])

  • buf.keys()

  • buf.lastIndexOf(value[, byteOffset][, encoding])

  • buf.slice([start[, end]])

  • buf.toJSON():返回 buf 的 JSON 格式

  • buf.toString([encoding[, start[, end]]]):根据 encoding 指定的字符编码将 buf 解码成字符串

  • buf.values():创建并返回 buf 键值(字节)的迭代器

===================================================

  • buf.swap16():将 buf 解析成无符号的 16 位整数的数组
  • buf.swap32():将 buf 解析成无符号的 32 位整数的数组,并且以字节顺序原地进行交换。
  • buf.swap64():将 buf 解析成 64 位数值的数组,并且以字节顺序原地进行交换

===================================================

  • buf.write(string[, offset[, length]][, encoding])
    • string 要写入 buf 的字符串。
    • offset < integer > 开始写入 string 之前要跳过的字节数。默认值: 0。
    • length < integer > 要写入的字节数。默认值: buf.length - offset。
    • encoding string 的字符编码。默认值: 'utf8'。
    • 返回: 已写入的字节数。

===================================================

  • buf.read****BE(offset)

  • buf.read****LE(offset)

    Double Float Int16 UInt16 Int32 UInt32

  • buf.readInt8(offset)

  • buf.readUInt8(offset)

  • buf.writeInt8(value, offset)

  • buf.writeUInt8(value, offset)

  • buf.writeIntBE(value, offset, byteLength)

  • buf.writeIntLE(value, offset, byteLength)

  • buf.writeUIntBE(value, offset, byteLength)

  • buf.writeUIntLE(value, offset, byteLength)