У меня очень длинное целое число. Целое число представлено массивом беззнаковых символов.
Пример: целое число 1234 с основанием 10 представлено в массиве как [4,3,2,1], [2,2,3,2] (основание 8) и [2, 13,4] (база 16)
Теперь я хочу преобразовать мое целое число с основанием n в другое целое число с основанием m. В моем убеждении за ответ я наткнулся на алгоритм Уоллара , первоначально из здесь
from math import *
def baseExpansion(n,c,b):
j = 0
base10 = sum([pow(c,len(n)-k-1)*n[k] for k in range(0,len(n))])
while floor(base10/pow(b,j)) != 0: j = j+1
return [floor(base10/pow(b,j-p)) % b for p in range(1,j+1)]
Сначала я подумал, что это мой ответ, но, к сожалению, это не так. У меня проблема в том, что алгоритм вычисляет сумму. В моем случае это проблема, потому что переменная base10
имеет тип целое число без знака из 32 бит. Поэтому, когда мое целое число, представленное в виде массива, имеет более 10 цифр, оно больше не может преобразовать число. У кого-нибудь есть решение?