www.mikrocontroller.net

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


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.