如何将一个大的 bigint 拆分为 32 位数字数组?我还需要再次将它们重新组合为 bigint。
我有一个 API,它接受最大 32 位整数的数组并返回最大 32 位整数的数组。但我有一个很大的 bigint 数字,我需要传递给这个 api 并从这个 api 接收回来。
如何进行拆分和重组?
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);