Базовое преобразование неограниченного размера?

Я пытаюсь реализовать тип BigInt в JavaScript, используя массив целых чисел . На данный момент каждая из них имеет верхнюю границу 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?

7
задан Ry- 29 April 2012 в 01:03
поделиться