Hallo! Ich muss mit C++ Hex-Werte aus einer Datei einlesen und in Dezimalzahlen umwandeln. Die Struktur der Werte sieht so aus: 32 0F 0B 0F 0A 0F 0D 0F 0E 0F 0D 0F 0D 0F 0C 0F 0D 0F 0D 0F FF FF FF FF FF FF FF FF FF FF FF FF dabei bilden immer zwei Paare einen Zahlenwert. Also z.B. -> "32 0F" Allerdings ist "32 0F" noch byteweise verdreht. Der richtige Wert müsste "0F 32" sein. Also umgedreht. Hat jemand von euch eine Idee wie ich die Hex-Werte in c++ umdrehen kann und in Dezimalzahlen umwandeln kann?? Vielleicht kann mir einer eine hilfreiche Funktion nennen, nach der ich mal suchen kann? Danke und bis später sagt der Peter.
Hallo Martin, ach nee, Peter, kannst du dir nicht mit den diversen CString-Funktionen was zusammen basteln? Die Umwandlung könnte man mittels itoa o.ä. vornehmen.
ok, danke Alexander.. werd ich mir mal noch genauer anschauen diese Sachen. Ne Funktion, die Daten byteweise einliest weisst jetzt auch grad nicht, oder?? Gruss, Martin
CString zeichenkette = ""; CFile file; zeichenkette += file.Read (...); Dann hast du den Inhalt der Datei in der zeichenkette stehen (wie groß ist diese ungefähr?). Den String kannst du dann mit beliebigen Stringfunktionen bearbeiten bzw. auf ihn analog zu einem Array mittels zeichenkette [i] zugreifen. Oder wie würdest du es machen wollen?
abend, in welcher Bibliothek ist den CString und CFile drin?? Gibts das nicht nur speziell in Visual C++?? Ich arbeite nämlich mit Dev-C++. Komm da irgendwie nicht weiter... :( :( mfG, Martin
Ist denn Deine Datei eine ASCII-Repräsentation eines Hexdumps, oder hast Du zur Verdeutlichung eine Binärdatei als Hexdump dargestellt? In letzterem Falle: Datei in WORD-Array (unsigned short) einlesen, fertig.
Hallo... habs jetzt wie folgt gelöst: // einlesen bis end-of-file while(ch!=EOF){ if(ch>='0' && ch<='9'){ result[i++]=ch-'0'; cout << result[i-1] << ' '; }else if (ch>='A' && ch<='F'){ result[i++]=ch-'A'+10; cout << result[i-1] << ' '; } ch = getc(fp); }//while // ausgabe als Integer-Werte for(i=0; i<length-1; i+=4){ tmp = (result[i+2]<<12)+(result[i+3]<<8)+(result[i]<<4)+result[i+1]; cout << tmp << " "; fprintf(fp2, "%i\n", tmp); k++; }//for nochmals Danke für eure Hilfe... Gruss.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.