Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/Base64

< C-Kurs
Version vom 5. März 2013, 17:37 Uhr von PaulG (Diskussion | Beiträge) (verschob „Ckurs/Base64“ nach „C-Kurs/Base64“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Schreibe eine Base64 Kodierer. Er soll einen fest im Programm vorgegebenen String nach Base64 kodieren. Um zu erfahren wie Base 64 funktioniert kannst du dir die Wikipedia Seite zu Base64 ansehen. Du kannst die Vorgabe benutzen. In dieser müssen nur die 4 Funktionen encode_*_output() geschrieben werden. Ersetze jeweils das return 0. Falls du Lust hast, kannst du dir selbst überlegen wie du ein solches Programm schreiben würdest. Allerdings haben wir strings noch nicht behandelt. Frage deinen Tutor falls dir etwas unklar ist.

Die Funktion encode_first_output soll aus Byte1 Zeichen1 brechnen:

     Byte1      |      Byte2      |     Byte3
7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0

5 4 3 2 1 0|5 4   3 2 1 0|5 4 3 2   1 0|5 4 3 2 1 0 
  Zeichen1 |   Zeichen2  |   Zeichen3  |  Zeichen4

das bedeutet, dass in Zeichen1 die 6 höchsten Bits von Byte1 enthält.

Beispiel:

Byte1: 0100 0011
Byte2: 1001 0101
Byte3: 0010 0001
Zeichen1: 010000 
Zeichen2: 111001
Zeichen3: 010100
Zeichen4: 100001

Du brauchst bitweise logische Verknüpfungen und Verschiebeoperatoren um zum Ziel zu kommen.

Achtung! Wir beachten den Standard nicht zu 100%. Eigentlich müsste nach 76 Zeichen ein Umbruch eingefügt werden. Wenn du Lust hast verändere das Programm, dass es sich so verhält.


Feedback

  • Ist da nicht ein Fehler in der Aufgabe? Das Beispiel ist doch nicht richtig!? --Tkroenert 16:42, 27. Aug. 2010 (CEST)
    • Wieso nicht?… Jedenfalls bis auf die Transformation durch das cb64-Array, die von main() erledigt wird. estar 18:43, 27. Aug. 2010 (CEST)