Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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]

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

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.