@quintbrut

Как работает перевод в другую систему исчисления Python?

В обещм есть
код
def convert_base(num, to_base=10, from_base=10):
    # сначала переводим десятичные
    if isinstance(num, str):
        n = int(num, from_base)
    else:
        n = int(num)
    # переводим десятичные в произвольную
    alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    if n < to_base:
        return alphabet[n]
    else:
        return convert_base(n // to_base, to_base) + alphabet[n % to_base]
.

Примеры использования
In [41]: convert_base('AA16342F', from_base=16, to_base=8)
Out[41]: '25205432057'

In [42]: convert_base('111', from_base=2)
Out[42]: '7'

In [43]: convert_base(33, to_base=16)
Out[43]: '21'

In [44]: convert_base(33333, to_base=20)
Out[44]: '436D'

In [45]: convert_base(3333333, to_base=20)
Out[45]: '10GD6D'

Меня интересует то, как оно переводит из произвольной системы исчисления в любую другую произвольную систему исчисления?
  • Вопрос задан
  • 9741 просмотр
Решения вопроса 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Так же как и на любом другом языке программирования.
Первая cсылка из гугла:
urok.1sept.ru/%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8...
Ответ написан
Комментировать
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Если на входе строка, то перевод в целое значение (в двоичный вид) осуществляется стандартной функцией int, у которой есть необязательный аргумент, указывающий на систему счисления.

Конвертация числа в n-ричную систему производится рекурсивно.
Если число на входе меньше базы, то возвращаем соответствующий по счету символ алфавита.
Если число больше или равно базе, то возвращаем символ алфавита, соответствующий остатку от деления на базу, а оставшееся после деления число снова отдаётся этой же функции рекурсивно.

В n-ричной системе счисления каждая очередная цифра числа - это очередной остаток от деления числа на базу.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы