/
Вопросы и ответы
/
Python
/

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

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

4 года назад

Andrey Moshkov

Ответы

1

Для этого можно воспользоваться стандартной функцией int.

Если у вас число бинарный литерал, например 0b111, то можно перевести в десятичную систему просто вызвав int(0b111).

Если у вас число строковой литерал, например "111", то можно вызвать эту функцию передав именованный аргумент base: int("111", base=2).

4 года назад

Maruf Karaev

0

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

Пример:

1
2
3
4
binary_number = "1010"
decimal_number = int(binary_number, 2)
print(decimal_number)
# Вывод: 10

2 года назад

Elena Gromova

0

В Python перевод в десятичную систему делает встроенная функция int(). Первым аргументом передают число строкой, вторым — основание системы:

1
print(int("1010", 2))  # => 10

Основание может быть любым от 2 до 36.

Примеры для разных систем

1
2
3
4
int("1111", 2)    # => 15  — двоичная
int("17", 8)      # => 15  — восьмеричная
int("ff", 16)     # => 255 — шестнадцатеричная, регистр букв не важен
int("0b1010", 0)  # => 10  — основание 0: Python определит его по префиксу 0b, 0o, 0x

Проверено на Python 3.12.

Как перевести вручную: развёрнутая форма

Каждую цифру умножают на основание в степени, равной номеру разряда. Разряды считают справа налево с нуля.

1011₂:

1
1·2³ + 0·2² + 1·2¹ + 1·2⁰ = 8 + 0 + 2 + 1 = 11₁₀

10101₂:

1
1·2⁴ + 0·2³ + 1·2² + 0·2¹ + 1·2⁰ = 16 + 0 + 4 + 0 + 1 = 21₁₀

Ответы для задач, которые чаще всего ищут:

ДвоичноеДесятичноеДвоичноеДесятичное
1000₂810000₂16
1010₂1010010₂18
1011₂1110100₂20
1100₂1210101₂21
1111₂1511000₂24
11101₂2911111₂31

Проверить себя можно одной строкой:

1
2
for code in ["1010", "1111", "11000", "10000"]:
    print(code, "=", int(code, 2))

Та же формула на Python

1
2
3
4
5
6
7
def to_decimal(digits, base):
    result = 0
    for d in digits:
        result = result * base + int(d, 36)
    return result

print(to_decimal("10101", 2))  # => 21

Функция идёт по цифрам слева направо и на каждом шаге умножает накопленное значение на основание. Получается то же, что в развёрнутой форме.

Обратный перевод

1
2
3
4
bin(10)           # => '0b1010'
format(10, "b")   # => '1010'  — без префикса
format(10, "08b") # => '00001010' — дополнить нулями до 8 знаков
oct(15), hex(255) # => ('0o17', '0xff')

Частые ошибки

1
2
int(1010, 2)
# TypeError: int() can't convert non-string with explicit base

С основанием int() принимает только строку. Пишите int("1010", 2).

1
2
int("102", 2)
# ValueError: invalid literal for int() with base 2: '102'

В двоичной системе есть только цифры 0 и 1. Ошибку даст и пробел внутри числа: int("10 10", 2). Пробелы по краям int() пропускает.

Системы счисления и работу с числами разбирают в бесплатном курсе «Основы Python».

17 дней назад

Никита Вихров

0

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

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

Из двоичной (основание 2)

1
2
3
int("1010", 2)   # 10
int("1111", 2)   # 15
int("100000", 2) # 32

Из восьмеричной (основание 8)

1
2
3
int("17", 8)   # 15
int("40", 8)   # 32
int("377", 8)  # 255

Из шестнадцатеричной (основание 16)

1
2
3
int("ff", 16)   # 255
int("1a", 16)   # 26
int("FF", 16)   # 255 — регистр не важен

Из произвольного основания

int() умеет работать с любым основанием от 2 до 36:

1
2
3
int("z", 36)   # 35 — 'z' это максимальная цифра в base 36
int("10", 3)   # 3  — тройка в троичной системе
int("10", 5)   # 5  — пятёрка в пятеричной системе

Если число уже записано как литерал в коде

Python понимает двоичные, восьмеричные и шестнадцатеричные литералы напрямую. Они уже являются числами в десятичной системе в памяти:

1
2
3
4
5
0b1010   # двоичный литерал → 10
0o17     # восьмеричный литерал → 15
0xff     # шестнадцатеричный литерал → 255

print(type(0b1010))  # <class 'int'>

Обратная задача: из десятичного в другую систему

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

1
2
3
4
5
6
7
8
bin(10)   # '0b1010'
oct(255)  # '0o377'
hex(255)  # '0xff'

# Без префикса:
bin(10)[2:]   # '1010'
oct(255)[2:]  # '377'
hex(255)[2:]  # 'ff'

Частая ошибка

int() принимает только строку, не число:

1
2
int(1010, 2)    # TypeError
int("1010", 2)  # 10 — правильно

Если передать целое число без основания — вернёт его же:

1
int(42)  # 42

5 месяцев назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845