在Node.js中,Buffer
类是一个用于处理二进制数据的全局构造函数。它提供了许多属性和方法来创建、操作以及处理二进制数据流。以下是一些主要的Buffer
属性和方法:
Buffer 属性
-
Buffer.poolSize:这是一个已废弃的属性,它返回用于所有Buffer实例创建的共享Buffer池的大小(以字节为单位)。
-
Buffer.BYTES_PER_ELEMENT:表示数组中每个元素的字节数。对于Buffer,这个值始终是1。
Buffer 方法
-
Buffer.alloc(size[, fill[, encoding]]):创建一个指定大小的已初始化的Buffer。可选地,可以用指定的值填充Buffer。
-
Buffer.allocUnsafe(size):创建一个指定大小的未初始化的Buffer。这个方法比
Buffer.alloc
快,但返回的Buffer实例可能包含旧数据,因此在使用前需要用fill
或write
来重写。 -
Buffer.allocUnsafeSlow(size):创建一个指定大小的未初始化的Buffer,并且不会使用Buffer池。这比
Buffer.allocUnsafe
更慢,但返回的Buffer实例不会与Buffer池中的其他Buffer共享内存。 -
Buffer.from(array):创建一个包含给定数组的新Buffer。
-
Buffer.from(arrayBuffer[, byteOffset[, length]]):创建一个包含给定ArrayBuffer数据的新Buffer。
-
Buffer.from(buffer):创建一个包含给定Buffer数据的新Buffer。
-
Buffer.from(string[, encoding]):创建一个包含给定字符串的新Buffer。
-
Buffer.isBuffer(obj):测试给定的对象是否是一个Buffer。
-
Buffer.byteLength(string[, encoding]):返回给定字符串的字节长度。
-
Buffer.concat(list[, totalLength]):将一组Buffer实例合并为一个新的Buffer实例。
-
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的相同内存,但从
start
到end
。 - 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中的二进制数据。