Основные встроенные функции
1.
bin()
– преобразует число в двоичную строку.num = 42
binary = bin(num) # Результат: '0b101010'
print(binary)
2.
oct()
– преобразует число в восьмеричную строку.num = 42
octal = oct(num) # Результат: '0o52'
print(octal)
3.
hex()
– преобразует число в шестнадцатеричную строку.num = 42
hexadecimal = hex(num) # Результат: '0x2a'
print(hexadecimal)
4.
int()
– преобразует строку в целое число, поддерживая разные основания (от 2 до 36).binary_string = "101010"
num = int(binary_string, 2) # Преобразует из двоичной системы в десятичную
print(num) # 42
Преобразование между системами счисления
1. Десятичная в другие системы
• Используйте
bin()
, oct()
и hex()
для преобразования числа.decimal = 42
print(bin(decimal)) # '0b101010'
print(oct(decimal)) # '0o52'
print(hex(decimal)) # '0x2a'
2. Двоичная, восьмеричная, шестнадцатеричная в десятичную
• Используйте
int()
с указанием основания системы.binary = "101010"
octal = "52"
hexadecimal = "2a"
print(int(binary, 2)) # 42
print(int(octal, 8)) # 42
print(int(hexadecimal, 16)) # 42
3. Между произвольными системами (например, из двоичной в шестнадцатеричную)
• Сначала преобразуйте исходное число в десятичное, затем в целевую систему.
binary = "101010"
decimal = int(binary, 2) # Преобразуем в десятичное
hexadecimal = hex(decimal) # Преобразуем в шестнадцатеричное
print(hexadecimal) # '0x2a'
Работа с произвольными системами счисления (2–36)
Для преобразования чисел в системы счисления с основаниями от 2 до 36 можно использовать пользовательскую функцию:
def to_base(number, base):
if number == 0:
return "0"
digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = ""
while number > 0:
result = digits[number % base] + result
number //= base
return result
num = 42
print(to_base(num, 2)) # '101010' (двоичная система)
print(to_base(num, 8)) # '52' (восьмеричная система)
print(to_base(num, 16)) # '2A' (шестнадцатеричная система)
print(to_base(num, 36)) # '16'
Преобразование из произвольной системы счисления в десятичную. Используйте встроенную функцию
int()
:number = "2A"
base = 16
decimal = int(number, base)
print(decimal) # 42
Примечания
1. Префикс в строках:
• Результаты функций
bin()
, oct()
, hex()
содержат префиксы 0b
, 0o
, 0x
, указывающие на систему счисления. Если нужно удалить их, используйте строковые методы:print(bin(42)[2:]) # '101010'
2. Регистры символов в шестнадцатеричных числах:
• Символы для чисел от
10
до 15
(A
-F
) в результатах hex()
выводятся в нижнем регистре. Для преобразования в верхний регистр:print(hex(42).upper()) # '0X2A'
3. Ошибки ввода:
• Если строка содержит недопустимые символы для системы счисления,
int()
вызовет ValueError
. Проверяйте входные данные перед обработкой.Теперь вы можете легко конвертировать числа между различными системами счисления!