Projekt 1 : "Geheime Nachrichten" (Teil 2)



4. Text in Zahlen konvertieren mit ASCII-Codes

Im letzten Beispiel haben wir schon erfolgreich mit Hilfe einer Schleife auf die einzelnen Zeichen eines Textes zugegriffen. Um aber in Teil 3 in Kürze die eigentliche Verschlüsselung durchführen zu können, müssen wir hier noch eine wichtige Vorbereitung treffen: Die Zeichen des Texts müssen in Zahlenwerte konvertiert werden, damit diese später von einer Berechnungsformel verändert werden können. Glücklicherweise müssen wir hierfür nicht viel tun, denn der Computer speichert und verarbeitet alle Zeichen bereits als Zahlen - wir müssen diese nur noch sichtbar machen.

Die Basis hierfür ist die ASCII-Tabelle. Diese Abkürzung steht für American Standard Code for Information Interchange und bezeichnet einen Standard zur numerischen Darstellung von Text, der in den 60er Jahren des letzten Jahrhunderts eingeführt wurde und es sogar schon ins Kino geschafft hat (The Martian, 2015}). Hierin wird jedem Zeichen des Alphabets sowie zahlreichen Sonderzeichen eine eindeutige Zahl im Bereich von 0 bis 127 zugeordnet. 

Um den ASCII-Code eines Zeichens in C++ sichtbar zu machen und auszugeben, muss dieses in den Datentyp int umgewandelt (”ge-castet") werden. Dieser Datentyp ist zur Speicherung von ganzen Zahlen vorgesehen und zwingt den Computer, ein Textzeichen als Zahl zu behandeln. 

Der nachfolgende Code schließt den zweiten Teil des Projekts ab und gibt die ASCII-Code der Zeichen eines Beispiel-Texts aus (Hinweis: An erster Stelle ist ein Leerzeichen). 

Zeile 1 : 'v' oder 'e'
Zeile 2 : Text zum Verschlüsseln
#include <iostream>
#include <string>

using namespace std;

int main()
{
    // TEIL 1: Ver- oder Entschlüsselung auswählen
    string input;
    cout << "Ver- oder Entschlüsseln? (v/e): " << endl;
    getline(cin, input);

    bool encode = false; // später ENTschlüsseln
    if (input == "v")
    {
        cout << "Text zum VERschlüsseln: " << endl;
        encode = true;
    }
    else if (input == "e")
    {
        cout << "Text zum ENTschlüsseln: " << endl;
    }
    else
    {
        cout << "Ungültige Eingabe!" << endl;
        exit(EXIT_FAILURE); // Fehlercode melden
    }

    // TEIL 2: Textzeichen nacheinander verarbeiten
    string text;
    getline(cin, text);

    int cnt = 0;
    while(cnt<text.size())
    {
        // Zeichen und ASCII-Code ausgeben
        cout << text[cnt] << ": "; // Zeichen
        cout << (int)text[cnt] << endl; // Code
        cnt++; 
    }
    cout << endl;



    return EXIT_SUCCESS; // wahlweise auch 0
}