« »

Kaninchenbau

In einer Vorlesung taucht eine obskure Nachricht auf dem Bildschirm auf:
19 46 6F 6C 6C 6F 77 20 74 68 65 20 77 68 69 74 65 20 72 61 62 62 69 74 2E F0 9F 90 87

a)

Level 1: Wissen

Nutzen Sie eine ASCII-Tabelle, um die Hexadezimalzahlen in Zeichen zu konvertieren.

Lösung

Beispielsweise mit Hilfe von https://www.rapidtables.com/code/text/ascii-table.html:

ENDOFMEDIUM F o l l o w _ t h e _ w h i t e _ r a b b i t . F0 9F 90 87

b)

Level 3: Anwenden

Ein Teil dieser Zeichenkette konnte mit der ASCII-Tabelle nicht in eine korrekte Repräsentation umgewandelt werden. Wie erklären Sie sich diese Symbole?

Lösung

Die Nachricht setzt sich zusammen aus:

  • einem nicht druckbaren Zeichen
  • 24 druckbaren ASCII-Zeichen
  • 4 Bytes, die nicht Teil des ASCII-Codes sind

Erklärung:

Berechnung des Unicode-Codepoints ausgehend von UTF-8-Kodierung:

HexF09F9087
Dezimal240159144135
Binär1111.00001001.11111001.00001000.0111

Darin enthaltene Codepoint-Bits (oben fett hervorgehoben):

0 0001 1111 0100 0000 0111 (binär)
     1    F    4    0    7 (hex)

Ergebnis: U+1F407

🐇

c)

Level 3: Anwenden

Sie erhalten nun folgende Nachricht. Sie können davon ausgehen, dass sie UTF-8-codiert ist.

01000111 01010010 01000001 01000010 01010011 11110000 10011111 10010010 10111011

Wie viele Zeichen enthält die Nachricht? Dekodieren Sie die Nachricht anhand einer geeigneten Tabelle und überprüfen Sie Ihre Vermutung.

Lösung

Jedes Byte denotiert seine Codierung in den ersten Bits:

  • Ist das erste Bit eine 0, codieren die folgenden 7 Bits genau ein Zeichen im ASCII-Format.
  • Beginnt ein Byte mit mindestens zwei 1en gefolgt von einer 0, gibt die Anzahl der 1en am Anfang des Bytes die Anzahl der Bytes an, die das Zeichen codieren.
  • Beginnt ein Byte mit einer 10, ist es ein Folge-Byte eines bereits begonnenen Zeichens.

Die Nachricht enthält also 6 Zeichen: 5 ASCII-codierte Zeichen und ein Zeichen aus 4 Byte.

Zeichen 1 - 5:

  1. 0100.0111 → G
  2. 0101.0010 → R
  3. 0100.0001 → A
  4. 0100.0010 → B
  5. 0101.0011 → S

Zeichen 6:

HexF09F92BB
Dezimal240159146187
Binär1111.00001001.11111001.00101011.1011

Ergebnis aus den darin enthaltenen Codepoint-Bits: U+1F4BB (💻)

     1    F    4    B    B
0 0001 1111 0100 1011 1011

Dekodierte Nachricht: “GRABS💻”