Node.js Buffer 深度解析:全面掌握属性与方法

在Node.js中,Buffer 类是一个用于处理二进制数据的全局构造函数。它提供了许多属性和方法来创建、操作以及处理二进制数据流。以下是一些主要的Buffer属性和方法:

Buffer 属性

  1. Buffer.poolSize:这是一个已废弃的属性,它返回用于所有Buffer实例创建的共享Buffer池的大小(以字节为单位)。

  2. Buffer.BYTES_PER_ELEMENT:表示数组中每个元素的字节数。对于Buffer,这个值始终是1。

Buffer 方法

  1. Buffer.alloc(size[, fill[, encoding]]):创建一个指定大小的已初始化的Buffer。可选地,可以用指定的值填充Buffer。

  2. Buffer.allocUnsafe(size):创建一个指定大小的未初始化的Buffer。这个方法比Buffer.alloc快,但返回的Buffer实例可能包含旧数据,因此在使用前需要用fillwrite来重写。

  3. Buffer.allocUnsafeSlow(size):创建一个指定大小的未初始化的Buffer,并且不会使用Buffer池。这比Buffer.allocUnsafe更慢,但返回的Buffer实例不会与Buffer池中的其他Buffer共享内存。

  4. Buffer.from(array):创建一个包含给定数组的新Buffer。

  5. Buffer.from(arrayBuffer[, byteOffset[, length]]):创建一个包含给定ArrayBuffer数据的新Buffer。

  6. Buffer.from(buffer):创建一个包含给定Buffer数据的新Buffer。

  7. Buffer.from(string[, encoding]):创建一个包含给定字符串的新Buffer。

  8. Buffer.isBuffer(obj):测试给定的对象是否是一个Buffer。

  9. Buffer.byteLength(string[, encoding]):返回给定字符串的字节长度。

  10. Buffer.concat(list[, totalLength]):将一组Buffer实例合并为一个新的Buffer实例。

  11. Buffer.isEncoding(encoding):测试给定的编码是否是有效的Buffer编码。

Buffer 实例方法

Buffer 实例具有许多方法,用于读取、写入、操作和检查Buffer的内容,包括:

  • buf.toString([encoding[, start[, end]]]):将Buffer解码为字符串。
  • buf.fill(value[, offset[, end]][, encoding]):用指定的值填充Buffer。
  • buf.write(string[, offset[, length]][, encoding]):将字符串写入Buffer。
  • buf.readUInt8(offset):从Buffer中读取一个无符号的8位整数。
  • buf.readUInt16BE(offset):从Buffer中读取一个大端序的无符号16位整数。
  • buf.readUInt16LE(offset):从Buffer中读取一个小端序的无符号16位整数。
  • (还有许多其他读取和写入不同大小和端序的整数的方法)
  • buf.readInt8(offset):从Buffer中读取一个有符号的8位整数。
  • buf.readInt16BE(offset):从Buffer中读取一个大端序的有符号16位整数。
  • buf.readInt16LE(offset):从Buffer中读取一个小端序的有符号16位整数。
  • (还有许多其他读取和写入不同大小和端序的有符号整数的方法)
  • buf.readUIntBE(offset, byteLength):从Buffer中读取指定字节长度的大端序无符号整数。
  • buf.readUIntLE(offset, byteLength):从Buffer中读取指定字节长度的小端序无符号整数。
  • buf.readIntBE(offset, byteLength):从Buffer中读取指定字节长度的大端序有符号整数。
  • buf.readIntLE(offset, byteLength):从Buffer中读取指定字节长度的小端序有符号整数。
  • buf.readFloatBE(offset):从Buffer中读取一个大端序的32位浮点数。
  • buf.readFloatLE(offset):从Buffer中读取一个小端序的32位浮点数。
  • buf.readDoubleBE(offset):从Buffer中读取一个大端序的64位浮点数。
  • buf.readDoubleLE(offset):从Buffer中读取一个小端序的64位浮点数。
  • buf.writeUInt8(value, offset):在Buffer中写入一个无符号的8位整数。
  • buf.writeUInt16BE(value, offset):在Buffer中写入一个大端序的无符号16位整数。
  • buf.writeUInt16LE(value, offset):在Buffer中写入一个小端序的无符号16位整数。
  • (还有许多其他写入不同大小和端序的无符号整数的方法)
  • buf.writeInt8(value, offset):在Buffer中写入一个有符号的8位整数。
  • buf.writeInt16BE(value, offset):在Buffer中写入一个大端序的有符号16位整数。
  • buf.writeInt16LE(value, offset):在Buffer中写入一个小端序的有符号16位整数。
  • (还有许多其他写入不同大小和端序的有符号整数的方法)
  • buf.writeUIntBE(value, offset, byteLength):在Buffer中写入指定字节长度的大端序无符号整数。
  • buf.writeUIntLE(value, offset, byteLength):在Buffer中写入指定字节长度的小端序无符号整数。
  • buf.writeIntBE(value, offset, byteLength):在Buffer中写入指定字节长度的大端序有符号整数。
  • buf.writeIntLE(value, offset, byteLength):在Buffer中写入指定字节长度的小端序有符号整数。
  • buf.writeFloatBE(value, offset):在Buffer中写入一个大端序的32位浮点数。
  • buf.writeFloatLE(value, offset):在Buffer中写入一个小端序的32位浮点数。
  • buf.writeDoubleBE(value, offset):在Buffer中写入一个大端序的64位浮点数。
  • buf.writeDoubleLE(value, offset):在Buffer中写入一个小端序的64位浮点数。
  • buf.swap16():将Buffer中的数据从一种16位整数格式交换为另一种。
  • buf.swap32():将Buffer中的数据从一种32位整数格式交换为另一种。
  • buf.swap64():将Buffer中的数据从一种64位整数格式交换为另一种。
  • buf.slice([start[, end]]):创建一个新的Buffer,它引用原始Buffer的相同内存,但从startend
  • buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]]):将Buffer的数据复制到另一个Buffer中。
  • buf.equals(otherBuffer):测试两个Buffer是否完全相等。
  • buf.inspect():返回一个表示Buffer的字符串,这对于调试非常有用。
  • buf.includes(value[, byteOffset][, encoding]):测试Buffer是否包含指定的值。
  • buf.indexOf(value[, byteOffset][, encoding]):返回Buffer中指定值的第一个匹配项的索引。
  • buf.lastIndexOf(value[, byteOffset][, encoding]):返回Buffer中指定值的最后一个匹配项的索引。
  • buf.keys():创建一个迭代器,用于遍历Buffer中的键(索引)。
  • buf.values():创建一个迭代器,用于遍历Buffer中的值。
  • buf.entries():创建一个迭代器,用于遍历Buffer中的键值对。
  • buf.toJSON():返回Buffer的JSON表示。

这些方法和属性提供了丰富的接口来创建、操作和处理Node.js中的二进制数据。

  • 42
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值