HEX Ausgabe gibt falsche Werte aus



  • Hallo!

    Mal wieder stehe ich vor einem Problem.
    Ich möchte ein simple Hexausgabe machen. Mir ist es auch gelungen, Hex auszugeben jedoch passt die Ausgabe nicht mit der von mir erwarteten Ausgabe überein.

    void CTabHex::ShowHex(CString Dump)
    {

    m_Datei.Format("%8.0X", m_Datei);
    m_ShowHex.AddString(m_Datei);

    in m_Datei wurde ein Pfadname (C:\Dokumente und Einstellungen\........) geladen und diesen möchte ich in Hex ausgeben.
    Die Ausgabe die meine Funktion macht ist jedoch "2F4BC0"
    Also Hex ist es schonmal aber warum ist die ausgeb so kurz und völliger Schwachsinn?



  • Wenn du %X als Formatkennung angibst, erwartet der Compiler dort einen Zahlenwert (int) und keinen CString - da brauchst du dich nicht zu wundern, wenn Müll herauskommt.

    (btw, was erwartest du eigentlich als Ausgabe?)



  • Ich hatte gehofft das mir diese Funktion die Asciizeichen in Hexwerte umwandelt.
    Das heißt z.B. aus einem ASCII C eine Hex 43 macht!

    Geht das irgendwie?
    LG und danke für die Hilfe!



  • Mit vorgefertigten Funktionen geht das nicht, aber versuch's mal mit einer Schleife:

    void CTabHex::ShowHex(CString Dump) 
    {
      CString hex;
      for(int i=0;i<Dump.GetLength();++i)
      {
        hex.Format("%02x",Dump[i]&0xFF);//das 0xFF fängt negative ASCII-Werte ab
        m_Datei+=hex;
      }
      ...
    }
    

    (btw, wo steht der Ursprungstext und wohin soll dessen Hex-Version? Und welche Aufgabe hat der Parameter "CString Dump" dabei?)



  • Also so recht klappen mag das nicht er gibt zwar jetzt mehr Hex Werte aus aber
    es werden von Schleifendurchlauf zu Schleifendurchlauf mehr und zeigen nicht das was ich mir erhofft hatte...außerdem muss ich die Funktionsparameter abändern, denn der Dump ist etwas das von einer anderen Klasse im Programm erzeugt wird und ich hatte nur Testweise die Funktion übernommen, da ich noch nicht weiß wie es schaffe das er wirklich den Inhalt der Datei, die geöffnet wurde, ausliest und nicht nur den Pfad.
    Eigentlich soll die Funktion ein MXF-File in Hex anzeigen. D.h. der Inhalt dieses MXF-files ist der "Ursprungstext" das gnaze soll auch nur angezeigt werden und muss sonst nirgendwo hin.

    LG



  • Wenn sich der String ständig verlängert, mußt du ihm am Anfang der Funktion wieder ausräumen (bei der Variante oben werden alle Hex-Daten ans Ende des ständig wachsenden Strings angehängt).



  • Ich kenne leider nur Empty() und damit löscht er ja den ganzen String



  • Das ist doch genau das, was du brauchst 😉 (Alternativ kannst du auch Delete() verwenden, um einzelne Zeichen(folgen) aus dem String zu löschen)


Anmelden zum Antworten