kuekenMcNugget Geschrieben 14. Februar 2003 Geschrieben 14. Februar 2003 Wie kann ich mit MFC bzw. C++ einen String in einen Hexwert umwandeln? Muss ich dass für jedes Zeichen einzelnt machen, oder geht das auch irgendwie mit dem kompletten String. Und wie mache ich das am besten??? ciao Zitieren
Klotzkopp Geschrieben 16. Februar 2003 Geschrieben 16. Februar 2003 Meinst du eine Funktion, die aus "abcd" "61626364" macht? Das könntest du z.B. so machen: #include <string> #include <sstream> #include <iomanip> using namespace std; string hexdump( const string& s ) { stringstream ss; string::size_type len = s.length(); ss.flags( ios::hex ); for( string::size_type i=0; i<len; ++i ) { ss << setw(2) << setfill('0') << static_cast<unsigned int>(s[i]); } return ss.str(); }[/CODE] Zitieren
Crush Geschrieben 17. Februar 2003 Geschrieben 17. Februar 2003 "abcd" ist ja eigentlich schon ein hexadezimaler String (wodurch die Fragestellung unlogisch wäre) und der Wert wäre dann lt. Taschenrechner: 43981. Irgendwie ist die Fragestellung ohne Beispiel nicht ganz klar. Genausogut könnte nämlich als Ergebnis wieder ein String rauskommen (sollte ja als Hex dargestellt sein glaub ich): oder das ganze als Zahlenarray. Wenn man die Frage beantworten will muß man das Ziel schon genauer erläutern. Soll das Ziel ein int, long, bcd oder String sein und wie soll der Eingangsstring verwendet werden, als Ganzzahl oder Hex-String und wie der Ausgangsstring: als 16/32/64-Bit Hex (die Wertigkeit steigt ja mit jeder Stelle) oder jedes Zeichen einzeln als Nibble mit voranstehendem "0x"??? Ich vermute eher, daß die Frage anders gemeint war: Der Eingangsstring soll eine normale Zahl sein und dann als "abcd" als String ausgegeben werden. Ein Beispiel (Input->Output und welches Format) wäre sicherlich hilfreicher um die Frage richtig beantworten zu können. Zitieren
Crush Geschrieben 18. Februar 2003 Geschrieben 18. Februar 2003 Das Gleiche hat etwas verständlicher (weil Beispiel) hier ein altes Forums-Mitglied gefragt. Evtl. hast Du das so gemeint. Du willst am liebsten alles in einer Zeile machen? Bitte: char *string="1F", buffer[20]; // Buffer muß an´s Ergebnis angepaßt sein _ltoa( strtoul( string, &string+sizeof(string), 16), buffer, 10 ); // hier ist die Zeile [code] Sollte die Stringgröße vor dem Compilen absolut unbekannt sein, eben wie im Link mit einem Stoppstring arbeiten. Ein ändern der Radixe (heißt das so im Plural?) erlaubt es die Zahlensysteme ineinander zu konvertieren (also binär, oktal, hexadezimal, dezimal oder sogar Eigene Formate, die keiner versteht ... schreib mal anstatt 10 hinten 6 und Du rechnest alles ins Sexadezimalsystem um =8-) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.