从Node JS缓冲区读取UINT 128

3
我正在编写一个NodeJS客户端,用于查询第三方服务器的信息。我从第三方服务器收到的消息中的一部分是一个UINT 128(在文档中有说明)。然而,据我所知,NodeJS缓冲区不支持从缓冲区读取128位整数。我已经检查了此页面,其中两个最可能的函数(读取BIGINTS和读取未指定字节长度的整数)都不支持128位整数。
我已经尝试安装和使用big-integer模块,但如果那是正确的方法,我就无法理解如何将字节从缓冲区读取到big-integer对象中。
我该如何从NodeJS缓冲区中读取UINT128?如果必要的话,我愿意使用位运算,只是不确定如何操作。
1个回答

1

我使用DataView的getBigUint64方法两次,然后对两个结果调用toString方法,将字符串拼接起来并将该字符串解析为BigInt。虽然这种方法很愚蠢,但似乎可以工作。你也可以尝试使用位运算符连接64位的BigInt,但我还没有尝试过。

readUInt128() {
    let a = this.readUInt64();
    let b = this.readUInt64();
    return BigInt(a.toString() + b.toString());
}

readUInt64() {
    let result = this.view.getBigUint64(this.pos, this.littleEndian)
    this.pos += 8
    return result
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接