如何将64位BigInt写入缓冲区?

时间:2018-07-24 01:24:20

标签: node.js

是否可以在Node.js(10.7+)中的Buffer中写入64位BigInts?

还是我仍然必须在两个操作中做到这一点?

let buf = Buffer.allocUnsafe(16);
buf.writeUInt32BE(Number(time>>32n),0,true);
buf.writeUInt32BE(Number(time&4294967295n),4,true);

the docs中找不到任何有希望的东西,但是还有BigInt.asUintN之类的几乎未记录的方法,所以我想问一下。

2 个答案:

答案 0 :(得分:1)

我只是面临类似的问题(需要构建和写入由41位时间戳,13位节点ID和10位计数器组成的64位ID)。使用buf.writeIntLE(),我能够写入缓冲区的最大单个值是48位。因此,我最终分别建立/写入了高48位和低16位。如果有更好的方法可以做到,那么我就不知道了。

答案 1 :(得分:0)

您已经尝试过此套餐了吗? https://github.com/substack/node-bigint#tobufferopts