Zeichen im String^ als HEXwert auf Bildschirm ausgeben ?
-
Hallo Zusammen,
Hier nochmal eine "Anfängerfrage":
Kann ich einen String direkt als HexFolge am Bildschirm ausgeben?
Oder diesen in eine den Zeichen entsprechende HEXfolge umwandeln und diese Hexfolge dann am Bildschirm ausgebenn?Beispiel:
ICh habe einen String: "ABC" und möchte am Bildschirm sehen "41 42 43"?Mein Problem:
Ich bekomme über die RS232 Schnittstelle einen Bytestrom variabler Länge.
diesen lese ich mittels ReadExisting() als String "S" ein.
Dieser String wird dann weiterbearbeitet.Da er aber manchmal unvorhergesehene Aktionen produziert, die mich vermuten lassen das etwas falsch empfangen wurde (Obwohl der LogicAnalyzer am RS232 die richtige Bytefolge zeigt)wollte ich der Vermutung nachgehen und mir zweck Debugging den Emfangenen Datenstrom als Folge von HexWerten anzeigen lassen.
(In einer Textbox oder Messagebox oder ähnlichem)Da der Datenstrom auch(und gerade) viele Steuerzeichen enthält reicht mir die ASCII Ausgabe leider nicht aus!
Gruß
Carsten
-
Z.B. so..
Um die Leerzeichen darfst Du dich selbst kümmern..Edit: Oups, habe gerade festgestellt, dass ich im C++/CLI und nicht im C# Forum bin, sollte aber keine Schwierigkeiten bereiten... oder?
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string s = "test"; string h = ConvertToHexString(s); } public static string ConvertToHexString(string input) { Encoding encoder = Encoding.Default; byte[] bytes = encoder.GetBytes(input); return ConvertToHexString(bytes); } public static string ConvertToHexString(byte[] bytes) { StringBuilder sb = new StringBuilder(); foreach (byte value in bytes) { sb.Append(value.ToString("X")); } return sb.ToString(); } } }
-
Hallo,
String ^s = "ABC"; for each (char c in s) { Console::WriteLine ( c.ToString("X") ); }
Gruss
foodax
-
Hi,
simon.gysi schrieb:
Z.B. so..
Edit: Oups, habe gerade festgestellt, dass ich im C++/CLI und nicht im C# Forum bin, sollte aber keine Schwierigkeiten bereiten... oder?Mensch, behaupte doch soetwas nicht leichtfertig
Ich fange doch gerade erst an...
(Wobei so langsam Licht am Horizon sichtbar wird )
Aber es stimmt, ich war gerade fast fertig mit dem C++ Code, als:Danke, genau das was ich gesucht habe! Mit einer leichten Änderung läuft es jetzt sehr gut:
~(Für die Suchfunktion)~
ref class RS_232 ... private: String^ HexAusgabe; ... void _Empfangen(){ ... HexAusgabe = ""; ... s = sPort->ReadExisting(); for each (char c in s) { HexAusgabe=HexAusgabe+" "+ c.ToString("X") ; } MessageBox::Show(HexAusgabe); } }
Danke euch beiden!
Gruß
Carsten