String to Hex konvertieren?
-
Hallo Forum,
kann man einen String der eine Zahl darstellt, in seinen Hex wert umwandeln???
Falls ja, welch Funktion ist das, sollte für Unicode tauglich sein?
Z.B.:
Der String als Zahl hat den Wert "9826" und sein Hexwert ist dann: 2662danke
pixel
-
Du kannst den String in einen Int-Wert umwandeln (in der C++-FAQ stehen einige Methoden, wie das geht) und dann als Hexadezimal ausgeben.
(btw, wie rechnest du denn? 9826 = 0x2662)
-
Geht das nicht auch mit sscanf und "%x"?
Bin mir da aber nicht genau sicher.
-
Hallo CStoll,
hab mich verschrieben weil ich viele Werte vor mir hatte, sorry Forum!Es geht um darum das diese als Zeichen dargestellt werden sollen, eine Möglichkein ist direkt einen Wert zu zuweisen CString csStr = L"2665"; !
Wenn ich eine ganze Zeile habe die mit solchen Wertern ergenzt werden soll, da hab ich ein Problem, so was:CString csStr = L"Das soll ein Herz werden: ♥"; csStr.Replace(L"♥", L"\x2665"); // <-- das funktioniert AfxMessageBox(csStr); // <-- ok!
Aber über eine .............??!
So soll das gehen müssen:
Ich lese den String ein, und extrachiere alle &#xxxx; aus und daraus die Nummer,
ok, diese verwndle ich dann in ein hex Wert:// cs ist Extract von ♥ , hat jetzt den wert "9829" iCharHex = _wtoi(cs); // in Zahl umwandeln.. _itow(iCharHex, hexn, 16); // in Hexformat ... // ich habe jetzt den Hexwert des Zeichens das ich anzeigen möchte! // jetzt die Ausgabe: CString csStr = L"Das soll ein Herz werden: ♥"; CString csZeichen = cs; // geht auch nicht weil jetzt der String csZeichen einfach nur die Zahl als String hat! :( CString csZeichen = L"\x2665"; // <-- das ist ein Problem, hex constants must have at least one hex digit csStr.Replace(L"♥", csZeichen); /* wenn das klappen würde dann kann ich mit einer schleife den String durchsuchen und die gewünsten Stellen mit neuen Werten ersetzen */
Also, wie bringe ich eine Variable das die Ihren hexwert als Zeichen ausgibt?!
mfg
pixel
-
'\xABC' ist der char mit dem ASCII-Wert 0xABC (analog für whar_t), also brauchst du den Wert nur nach char (bzw. wchar_t) zu casten:
unsigned int val = atoi(str.Mid(x,y));//x und y ergeben den Teil, in dem deine Zahl steht CString rep = (wchar_t) val; str.Replace(str.Mid(x,y),rep);
-
Hallo CStoll,
danke, das hat geholfen!!!Das auslesen war kein Problem, aber die konvertierung!!!
MFG
pixel
-
In dieser while-Schleife mußt du ganz einfach alle "&#" suchen und auswerten:
int posx = str.Find(L"&#");//suche Anfang der "&#XXX;"-Sequenz while(posx>=0) { int posy=str.Find(L";",posx);//suche Ende der Sequenz CString sub=str.Mid(posx+2,posy-posx-2); unsigned int val=atoi(sub); CString rep=(wchar_t)val; str.Replace(str.Mid(posx,posy-posx+1),rep); posx=str.Find(L"&#");//suche Anfang der nächsten Sequenz }