我有一个 java 后端,它使用字节读取/写入带有 javascript 前端的任意精度数字。
在 Java 方面,我只是这样做:
new BigInteger("123").toByteArray()
医生说:
Returns a byte array containing the two's-complement
representation of this BigInteger.
在 javascript 方面,我需要将字节读入 javascript 的 BigInt,反之亦然。
我让 javascript 将字节读入 BigInt,如下所示:
const hex = Buffer.from(bytes).toString('hex')
let big = BigInt('0x' + hex)
if (a[0] & 0x80) {
const negative = BigInt('0x1' + '0'.repeat(hex.length))
big -= negative
}
但是将 BigInt 转换为字节似乎非常棘手。我环顾四周,发现其他解决方案都只覆盖正数而不是负数