Top.Mail.Ru
Ответы

Системы счисления в питоне

Как перевести число в абсолютно любую систему счисления (например шестеричную) на питоне

По дате
По рейтингу
Аватар пользователя
Знаток
123456789101112131415161718192021
 def from_base(number: tuple, base: int) -> int: 
    '''Перевод числа из системы исчисления с основанием base''' 
    return sum([n*base**e for e, n in enumerate(number[::-1]) ]) 
 
def to_base(number: int, base: int) -> tuple: 
    '''Перевод числа в систему исчисления с основанием base''' 
    result = list() 
    while number != 0: 
        number, n = divmod(number, base) 
        result.append(n) 
    result.reverse() 
    return tuple(result)


print(to_base(123, 3)) # перевод числа 123 в троичную систему, результат будет (1, 1, 1, 2, 0), результатом является кортеж, в котором числа обозначают "численное значение цифр", это необходимо т.к. нет например цифры 10, есть число 10 состоящие из цифры 1 в разряде десятков и 0

#если нужна запись числа, то максимум могу дать вот эту функцию, но она будет печатать числа только в системах исчисления, не превышающих 36

def write_num_on_base(number, base):
    alphabet = {i:e for i,e in enumerate('0123456789abcdefghijklmnopqrstuvwxyz')}
    return ''.join([alphabet[n] for n in to_base(number, base)]) 
Аватар пользователя
Просветленный

"в абсолютно любую систему счисления"

https://ru.wikipedia.org/wiki/Фунес_памятливый
"
Фунес развлекается тем, что ...составляет собственную систему счисления, где каждое число имеет своё название, «вместо семи тысяч тридцати он сказал бы, например, Максимо Перес; вместо семи тысяч сорока — поезд».
"