Wie berechne ich XOR



  • Hallo!
    Ich komme mit meinem prog nicht weiter. Ich habe ein prog mit einem Eingabefeld. In dieses Eingabefeld soll man eine Hexadezimalzahl eingeben können. Wenn man dann ein button drückt soll das prog die XOR-Summe berechnen. Und zwar vom ersten und zweiten zeichen, das ergebnis mit dem dritten zeichen, das ergebnis mit dem vierten usw. Der inhalt(m_Fenster) der eingegeben wird, ist ein CString.

    int iL=m_Fenster.GetLength();
    
    int i;
    m_XOR = m_Fenster[0]^m_Fenster[1];
    for (i=2; i<iL; i++)
    {
    m_Test = m_Fenster[i]; //nur zur Prüfung, beim debuggen
    m_XOR = m_XOR^m_Fenster[i];
    }
    

    Wenn ich jetzt in das Eingabefeld z.B.:"12345" eingebe steht in m_Test beim durchlaufen der schleife für i=1 >> m_Test=50, i=2 >> m_Test=51, i=3 >> m_Test=52, i=4 >> m_Test=53. Kann mir jemand erklären warum das so ist?? 😕
    m_Test für z.B. i=2 müsste meiner meinung nach gleich 3 sein????????????
    Warum werden falsche werte gelesen??
    Und mit Buchstaben läuf es schon mal gar nicht.



  • Du hast die Umrechnung in Hex weggelassen. Da steht nämlich nicht 12345 drin, sondern "12345" was ja was ganz anderes ist.

    Du musst also pro Zeichen gucken:
    Wenn es eine Zahl ist, bekommst du den Wert mit atoi.
    Wenn es ein Buchstabe ist, musst du 'A' abziehen und 10 addieren. (bei kleinen Buchstaben 'a')
    Beispiel: Eingabe 'B' -> 'B' - 'A' + 10 == 66 - 65 + 10 = 11 😃

    Versuch es mit der Umrechnung nochmal, jetzt sollte es gehen.



  • Alles klar soweit. Jetzt noch eine kleine schleife und das wars.
    DANKE "estartu_de"


Log in to reply