Codierung und Decodierung

Zeichencodierung

Die folgenden Experimente benutzen den Python-Datentyp bytes zur Byte-Darstellung von Zeichen. Mit Hilfe der gleichnamigen Umwandlungsoperation bytes kann man eine Zeichenkette in eine Bytefolge umwandeln. Dabei muss man die zu benutzende Codierung angeben. Mit der Umwandlungsoperation str kann man eine Bytefolge wieder in eine Zeichenkette umwandeln. Auch hier muss man die zu benutzende Codierung angeben.

Python-Dialog 1:

>>> text = 'hallo!'
>>> bytefolge = bytes(text, 'iso8859-1')
>>> bytefolge
b'hallo!'
>>> str(bytefolge, 'iso8859-1')
'hallo!'
>>> text = 'äußerst böse'
>>> bytefolge = bytes(text, 'utf8')
>>> bytefolge
b'\xc3\xa4u\xc3\x9ferst b\xc3\xb6se'
>>> str(bytefolge, 'utf8')
'äußerst böse'

Aufgabe 1

Analysiere den gezeigten Dialog. Teste selbst weitere Dialoge dieser Art. Kannst du die Zusammenhänge erklären?

Python-Dialog 2:

>>> bytefolge = b'b\xc3\xb6se'
>>> for byte in bytefolge:
        print(byte)

	
98
195
182
115
101
>>> for byte in bytefolge:
        print(hex(byte))

	
0x62
0xc3
0xb6
0x73
0x65
>>> for byte in bytefolge:
        print(bin(byte))

	
0b1100010
0b11000011
0b10110110
0b1110011
0b1100101
>>> for byte in bytefolge:
        print(bin(byte)[2:].zfill(8))

	
01100010
11000011
10110110
01110011
01100101

Aufgabe 2

Dialog 2 zeigt, wie man die Binärdarstellung der Bytes einer Bytefolge erzeugt. Probiere es selbst aus. Kannst du die jeweils erzeugten Ausgaben deuten?

Python-Dialog 3:

>>> text = 'böse'
>>> bytefolge = bytes(text, 'utf8')
>>> listeBitfolgen = []
>>> for byte in bytefolge:
        bitfolge = bin(byte)[2:].zfill(8)
        listeBitfolgen = listeBitfolgen + [bitfolge]

	
>>> listeBitfolgen
['01100010', '11000011', '10110110', '01110011', '01100101']

Python-Dialog 4:

>>> listeBitfolgen = ['01100010', '11000011', '10110110', '01110011', '01100101']
>>> bytefolge = b''
>>> for bitfolge in listeBitfolgen:
        byte = int(bitfolge, 2)
        bytefolge = bytefolge + bytes([byte])

	
>>> bytefolge
b'b\xc3\xb6se'
>>> text = str(bytefolge, 'utf8')
>>> text
'böse'

Aufgabe 3

Teste und analysiere die Dialoge 3 und 4. Jetzt sollte klar sein, wie man mit Python Zeichenketten Schritt für Schritt in Bitfolgen umwandelt und umgekehrt.

Bitdarstellung

Naheliegend ist es, Bits direkt über Spannungspegel darzustellen. Wenn der Spannungspegel eine bestimmte - vorab festgelegte - Zeit den Wert 'High' hat, dann soll hierdurch das Bit '1' dargestellt werden. Analog wird das Bit '0' durch den Spannungspegel 'Low' dargestellt. (-> Veranschaulichung)

Es geht aber auch ganz anders: (-> Veranschaulichung)

X

Fehler melden

X

Suche