我发现了 3 种将 Uint8Array 转换为 BigInt 的方法,由于某种原因,它们都给出了不同的结果。您能告诉我哪一种是正确的以及我应该使用哪一种吗?
bigintConversion.bufToBigint()函数来获取 BigInt。实现如下:export function bufToBigint (buf: ArrayBuffer|TypedArray|Buffer): bigint {
let bits = 8n
if (ArrayBuffer.isView(buf)) bits = BigInt(buf.BYTES_PER_ELEMENT * 8)
else buf = new Uint8Array(buf)
let ret = 0n
for (const i of (buf as TypedArray|Buffer).values()) {
const bi = BigInt(i)
ret = (ret << bits) + bi
}
return ret
}
Run Code Online (Sandbox Code Playgroud)
let view = new DataView(arr.buffer, 0);
let result = view.getBigUint64(0, true);
Run Code Online (Sandbox Code Playgroud)
let …Run Code Online (Sandbox Code Playgroud)