Forum: PC-Programmierung Strings spalten und ordnen, wie???


von Martin (Gast)


Lesenswert?

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.

von Alexander (Gast)


Lesenswert?

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.

von Martin (Gast)


Lesenswert?

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

von Alexander (Gast)


Lesenswert?

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?

von Martin (Gast)


Lesenswert?

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

von Rufus T. Firefly (Gast)


Lesenswert?

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.

von Martin (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.