Загрузка данных


def to_binary(number: str, base: int, alphabet="0123456789ABCDEF") -> str:
    bits = int.bit_length(base - 1)
    result = ""
    for ch in number.upper():
        value = alphabet.index(ch)
        result += format(value, f"0{bits}b")
    return result

def from_binary(binary: str, base: int, alphabet="0123456789ABCDEF") -> str:
    bits = int.bit_length(base - 1)
    while len(binary) % bits != 0:
        binary = "0" + binary
    result = ""
    for i in range(0, len(binary), bits):
        result += alphabet[int(binary[i:i+bits], 2)]
    return result

def task1():
    binary = "110101101"
    result = from_binary(binary, 8)
    print(f"({binary})2 -> ({result})8")

task1()

def task2():
    binary = "101111001"
    result = from_binary(binary, 16)
    print(f"({binary})2 -> ({result})16")

task2()

def task3():
    octal = "655"
    result = to_binary(octal, 8)
    print(f"({octal})8 -> ({result})2")

task3()

def task4():
    hex = "2F2"
    result = to_binary(hex, 16)
    print(f"({hex})16 -> ({result})2")

task4()

def task5():
    num_oct = "655"
    num_bin = to_binary(num_oct, 8)
    num_hex = from_binary(num_bin, 16)
    print(f"({num_oct})8 -> ({num_hex})16")

task5()

def task6():
    num = "12345"
    binary = to_binary(num, 10)
    restored = from_binary(binary, 10)
    print(f"{num} -> {restored}")

task6()