bigint-buffer BigInt与Buffer转换库
BigInt 的缓冲区转换,真的是个坑,bigint-buffer就是为这个来的。它专门BigInt和Buffer之间的互转,是在 Node 环境下直接用 N-API,速度快还不绕路,不用转成十六进制字符串那一套。浏览器端用的是字符串方式,也还算稳妥。
JS 里Number最大就支持到 2^53 - 1
,再大就不准了,像 64、128、256 位的 ID、哈希这些,BigInt就合适。你如果搞区块链、加密、或数据库唯一标识啥的,遇到这类大整数就太常见了,用这个库顺手。
bigint-buffer的接口也挺简单,直接把 BigInt
转成 Buffer
,或者反过来。举个例子:
const { toBufferBE, toBigIntBE } = require('bigint-buffer');
const num = 1234567890123456789012345678901234567890n;
const buf = toBufferBE(num, 32); // 转成 32 字节的大端 Buffer
const back = toBigIntBE(buf); // 再转回来
嗯,就这么简单,代码也清爽。如果你在 Node 里二进制流,或者搞自定义协议的,那它基本是标配了。
不过要注意,浏览器里没法用 N-API,性能不如 Node 高,如果纯前端建议别用太大整数,浏览器内存吃不消。
如果你想了解更底层的东西,可以看看 n-api 的,对这个库怎么跑得快也有点。
87.05KB
文件大小:
评论区