String in Hex-String konvertieren und zurück
-
Hallo !
Wie kann ich einen String in einen Hex-String konvertieren und zurück.
Geht das auch mit einer "BSTR-Struktur" ?
-
-
wie bitte?
Gib' mal ein Beispiel an -
im Prinzip ja...
-
-
in hex -> CString::Format, wsprintf, itoa (radix = 16)
von hex -> sscanf (gibt evtl. auch was anderes)Parameter Format: "%h"
-
peterchen schrieb:
-
wie bitte?
Gib' mal ein Beispiel an -
im Prinzip ja...
Gemeint habe ich ...
Ich habe einen String zB "Hallo Welt". Diesen möchte ich jetzt mittels einer Funktion in einen Hex-String konvertieren, so dass ich "48414C4C4F2057454C54" erhalte.Und für den Rückweg, Hex -> String muss es natürlich auch etwas geben.
-
-
Ganz easy eigentlich:
CString strHex; CString strText="Hallo Welt"; for(int i=0;i<strText.GetLength();++i) strHex.Format(strHex+"%h",strText[i]);Rückwärts wirds nen bissle komplizierter:
CString strHex = "48414C4C4F2057454C54"; CString strText; for(int i=0;i<strHex.GetLength();++i) strText+=HexToChar(strHex.GetMid(i*2,2));HexToChar könnte dann zb so aussehen:
CString HexToChar(CString strHex) { //Es wird einfach gesagt, die Funktion funktioniert nur korrekt, wenn strHex exakt zwei Zeichen beinhaltet return CString(strHex[0]*16+strHex[1]); }Wie immer ungetestet und ohne jegliche Gewähr.
-
Bei einem BSTR müßtetst du halt jedes einzelne Byte konvertieren.
Wenn du direkt in einen BSTR reinschreiben willst, mußt du den Ziel-String vorher mitentsprechender Länge allozieren (SysAllocStringLen)
-
peterchen schrieb:
Bei einem BSTR müßtetst du halt jedes einzelne Byte konvertieren.
Gibt es dafür irgendeine Funktion von Haus-Aus zum konvertieren eines Zeichencodes/Zeichen in den entsprechenden Hex-Wert ?
Code wäre dann ja wie folgt
/* *Data ist eine Zeichenfolge vom Typ BSTR *HexOut ist eine Zeichenfolge vom Typ BSTR */ int i; for (i = 0; i < LenOfData; i++) *HexOut = HexJetzt(*data); /* Natürlich wird entsprechend Speicher allokiert für den BSTR HexOut */
-
gibt es nicht, aber dEUs' Code sieht schon mal gut aus. Mußt halt nur dran denken das BSTR = UNICODE = 2 Byte / Zeichen (es sei denn du unterstützt auch 16 Bit OLE bzw. Apple Mac)