我正在尝试使用整数数组在 JavaScript 中实现 BigInt 类型。现在每个都有一个 256 的上限。我已经完成了所有整数运算,但我不知道如何将 BigInt 转换为其字符串表示形式。当然,简单的方法是这样的:
BigInt.prototype.toString = function(base) {
var s = '', total = 0, i, conv = [
,,
'01',
'012',
'0123',
'01234',
'012345',
'0123456',
'01234567',
'012345678',
'0123456789',
,
,
,
,
,
'0123456789abcdef'
];
base = base || 10;
for(i = this.bytes.length - 1; i >= 0; i--) {
total += this.bytes[i] * Math.pow(BigInt.ByteMax, this.bytes.length - 1 - i);
}
while(total) {
s = conv[base].charAt(total % base) + s;
total = Math.floor(total / base);
}
return s || '0';
};
但是当 BigInts 实际上变大时,我将无法再通过添加进行转换。如何将 base-x 数组转换为 base-y 数组?