28  Python Funktionen zum Umrechnen zwichen den Zahlensystemen

TippNotebook interaktiv ausführen

Open In Colab Binder Kaggle

Python stellt Funktionen zur Verfügung, mit deren Hilfe Zahlen zwischen den verschiedenen Zahlensystemen umgerechnet werden können. Trotzdem sollen in diesem Notebook eigene Funktionen implementiert werden, mit deren Hilfe Zahlen zwischen dem Dezimal- und Binärsystem umgerechnet werden können.

Ausserdem sollen Funktionen implementiert werden, mit welchen Strings in ihre binäre Repräsentation umgewandelt werden können und umgekehrt.

28.1 Umrechnung von Binär- in Dezimalzahlen

def bin2dec(binary: str) -> int:
    decimal = 0
    length = len(binary)
    
    for i in range(1, length + 1):
        decimal += int(binary[-i]) * 2 ** (i-1)
        
    return decimal
        

28.2 Umrechnung von Dezimal- in Binärzahlen

def dec2bin(decimal: int) -> str:
    binary = ''
    while decimal > 0:
        binary = str(decimal % 2) + binary
        decimal = decimal // 2
        
    return binary

28.3 Binäre Repräsentation von Strings

Für die Darstellung eines Strings in binärer Form wird auf die dezimale Repräsentation des Unicode-Zeichens zurückgegriffen. Dazu stellt Python die Funktion ord() zur Verfügung. Diese Funktion gibt die dezimale Repräsentation eines Unicode-Zeichens zurück.

def str2bin(s: str) -> str:
    length_string = len(s)
    binary = ''
    for i in range(length_string):
        c = s[i]
        u10 = ord(c)
        b = dec2bin(u10)
        length_binary = len(b)
        if i % 5 == 0 and i != 0:
            binary += '\n'
        b = '0' * (8 - length_binary) + b
        binary += b + ' '
    return binary.strip()

28.4 Umwandlung der binären Repräsentation in einen String

Um aus der dezimalen Repräsentation eines Unicode-Zeichens wieder den entsprechenden String zu erhalten, stellt Python die Funktion chr() zur Verfügung.

def bin2str(binary: str) -> str:
    binary = binary.replace(' ', '')
    binary = binary.replace('\n', '')
    length = len(binary)
    s = ''
    for i in range(0, length, 8):
        b = binary[i:i+8]
        u10 = bin2dec(b)
        c = chr(u10)
        s += c
    return s