Найти в Дзене

Перевод чисел в разные системы счисления в Python

Оглавление

Python предоставляет удобные инструменты для перевода чисел из одной системы счисления в другую. Давайте рассмотрим несколько способов:

Встроенные функции для распространенных систем счисления

  • Двоичная система:Преобразование из десятичной в двоичную:

decimal_number = 10

binary_number = bin(decimal_number)

print(binary_number) # Выведет: 0b1010

Удаление префикса "0b":

binary_number = binary_number[2:]

print(binary_number) # Выведет: 1010

Восьмеричная система:

  • Преобразование из десятичной в восьмеричную:

decimal_number = 10

octal_number = oct(decimal_number)

print(octal_number) # Выведет: 0o12

Удаление префикса "0o":

octal_number = octal_number[2:]

print(octal_number) # Выведет: 12

Шестнадцатеричная система:

  • Преобразование из десятичной в шестнадцатеричную:

decimal_number = 10

hexadecimal_number = hex(decimal_number)

print(hexadecimal_number) # Выведет: 0xa

Удаление префикса "0x":

hexadecimal_number = hexadecimal_number[2:]

print(hexadecimal_number) # Выведет: a

Перевод в произвольную систему счисления

Для более гибкого перевода в любую систему счисления можно использовать следующий алгоритм:

def to_base(n, b):

"""

Преобразует число n в систему счисления с основанием b.

Args:

n: Число для преобразования.

b: Основание системы счисления.

Returns:

Строка, представляющая число в новой системе счисления.

"""

if n == 0:

return '0'

digits = "0123456789ABCDEF"

result = ""

while n > 0:

result = digits[n % b] + result

n //= b

return result

# Пример использования:

number = 42

base = 16

result = to_base(number, base)

print(result) # Выведет: 2A

Перевод из другой системы счисления в десятичную

Для перевода числа из любой системы счисления в десятичную можно использовать встроенную функцию int():

binary_number = "1010"

decimal_number = int(binary_number, 2) # 2 - основание системы счисления

print(decimal_number) # Выведет: 10

Важные моменты:

  • Основания систем счисления: В Python для двоичной, восьмеричной и шестнадцатеричной систем используются префиксы 0b, 0o и 0x соответственно.
  • Удаление префиксов: Если вам не нужен префикс, его можно легко удалить с помощью срезов строк.
  • Произвольные основания: Функция to_base() позволяет переводить числа в любую систему счисления.
  • Ограничения: При преобразовании в системы счисления с основанием больше 36, необходимо использовать другие символы для представления цифр.

Дополнительные возможности:

  • Библиотеки: Существуют библиотеки, которые предоставляют более продвинутые функции для работы с числами в различных системах счисления.
  • Алгоритмы: Можно реализовать свои собственные алгоритмы для более сложных преобразований.