Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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]

Geschrieben

"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.

Geschrieben

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-)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...