小编Wor*_*han的帖子

在 Javascript 中将 Uint8Array 转换为 BigInt

我发现了 3 种将 Uint8Array 转换为 BigInt 的方法,由于某种原因,它们都给出了不同的结果。您能告诉我哪一种是正确的以及我应该使用哪一种吗?

  1. 使用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)
  1. 使用数据视图:
let view = new DataView(arr.buffer, 0);
let result = view.getBigUint64(0, true);
Run Code Online (Sandbox Code Playgroud)
  1. 使用 FOR 循环:
let …
Run Code Online (Sandbox Code Playgroud)

javascript biginteger data-conversion uint typescript

3
推荐指数
1
解决办法
2818
查看次数