首页 > 解决方案 > 如何将 64 位 BigInt 写入缓冲区?

问题描述

是否可以将 64 位 BigInts 写入BufferNode.js (10.7+) 中?

还是我仍然需要在两次操作中进行?

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

我在文档中找不到任何有希望的东西,但是还有其他几乎没有记录的方法,例如BigInt.asUintN,所以我想我会问。

标签: node.js

解决方案


我刚刚遇到了类似的问题(需要构建和编写由 41 位时间戳、13 位节点 ID 和 10 位计数器组成的 64 位 ID)。我能够写入缓冲区的最大单个值是使用 buf.writeIntLE() 的 48 位。所以我最终独立地构建/写入了高 48 位和低 16 位。如果有更好的方法来做到这一点,我不知道。


推荐阅读