Datei als Hex auslesen und wieder schreiben



  • Hi,
    ich steh grad auf dem schlauch wie ich ne Datei im Hex Format auslese bzw als Hex darstellen kann.

    Mein erster Gedanke war die datei als int auszulesen und dann mit CString:Format("%x",...) in Hex umzuwandeln. Klappt auch soweit so wie es aussieht hab ich in meinem Integer Array jeweils 4 Byte, also 4 Zeichen pro array item

    // in eine Textdatei hab ich HHHH geschrieben
    // in hex also 48484848
    	CFile file;
    	file.Open("Test.txt", CFile::modeRead);
    	int fSize = file.GetLength();
    	int* content= new int[fSize];
    
    	file.ReadHuge(content,fSize);
    	CString temp;
    	temp.Format("%x",content[0]);
    //bis hier hab ich die korrekten HExwerte in dem CString stehen
    	temp = "0x"+temp; //nur ein versuch ^^
    	int hex = atoi(temp); // ergibt 0
    

    Das zurückkonvertieren von Hex in int um es wieder in die Datei zu schreiben klappt allerdings nicht, was ihr da seht war ein nicht ganz ernst gemeinter versuch, aber die hoffnung stirbt zuletzt 🙄

    Wie konvertiere ich jetzt den Hexwert aus dem String oder einem Integer in einen normalen dezimalen Wert?



  • Man kann bei strtoul die Basis mit angeben, sollte also funtionieren.



  • habs jetzt so gelöst:
    sscanf(temp,"%x",&hex);

    das mit dem doppelten pointer bei strtoul ist mir noch etwas suspekt aber ich schaus mir nochmal an


Anmelden zum Antworten