如何将bigint分割成32位块并重新组合它们?

问题描述 投票:0回答:1

如何将一个大的 bigint 拆分为 32 位数字数组?我还需要再次将它们重新组合为 bigint。

我有一个 API,它接受最大 32 位整数的数组并返回最大 32 位整数的数组。但我有一个很大的 bigint 数字,我需要传递给这个 api 并从这个 api 接收回来。

如何进行拆分和重组?

javascript bigint
1个回答
0
投票

function bigintTo32BitArray(bigint) {
    const result = [];
    const mask = BigInt(0xFFFFFFFF); // 32-bit mask
    while (bigint > 0) {
        result.push(Number(bigint & mask)); // Extract the lowest 32 bits and convert to Number
        bigint >>= 32n; // Shift right by 32 bits
    }
    return result;
}

const bigNumber = 123456789123456789178978978987978978978923434534534534534556789n;
const chunks = bigintTo32BitArray(bigNumber);
console.log(chunks);

function arrayToBigInt(array) {
    let result = 0n;
    for (let i = array.length - 1; i >= 0; i--) {
        result = (result << 32n) + BigInt(array[i]);
    }
    return result;
}

const out = arrayToBigInt(chunks);
console.log(out, out === bigNumber);

© www.soinside.com 2019 - 2024. All rights reserved.