如何在 Node.js 10 中从缓冲区读取/写入 bigint?

Jay*_*Jay 1 buffer bigint node.js

我看到节点 10 支持 BigInt。但是,Buffer 类中没有 ReadBigInt() 功能。

有可能以某种方式绕过它吗?也许读取 2 个整数,将它们转换为 BigInt,移动上面的一个并将它们相加以重建 bigint?

Rob*_*die 6

有点晚了,但由于BigInt ctor 接受十六进制字符串,我们可以将 Buffer 转换为十六进制字符串并将其传递给 ctor BigInt。这也适用于数字> 2 ** 64,并且不需要任何依赖项。

function bufferToBigInt(buffer, start = 0, end = buffer.length) {
  const bufferAsHexString = buffer.slice(start, end).toString("hex");
  return BigInt(`0x${bufferAsHexString}`);
}
Run Code Online (Sandbox Code Playgroud)