ASCII Anzeige Sonderzeichen

06/07/2009 - 21:14 von Markus Sommer | Report spam
Hallo,
ich empfange aus einer Socketverbindung
Zeichen < ASCII 65

Wie kann ich diese dennoch in einem Textfeld darstellen?

Momentan bricht die Anwendung ohne Meldung ab.

richTextRxMessage.Text = richTextRxMessage.Text


Grüße Markus



Codeauszug

SocketPacket theSockId = (SocketPacket)asyn.AsyncState;
int iRx = theSockId.thisSocket.EndReceive( asyn );
char[] chars = new char[iRx + 1];
System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
int charLen = d.GetChars( theSockId.dataBuffer, 0, iRx, chars, 0 );
System.String szData = new System.String( chars );
if (szData.IndexOf(0) < 44)
{
// Das erste Zeichen erhalte ich wie?
}
else
{
// Anzeige ASCII 2,3,29,
richTextRxMessage.Text = richTextRxMessage.Text + szData;
}
 

Lesen sie die antworten

#1 Frank Dzaebel
07/07/2009 - 07:41 | Warnen spam
Hallo Markus,

ich empfange aus einer Socketverbindung Zeichen [kleiner als] ASCII 65.
Wie kann ich diese dennoch in einem Textfeld darstellen?



Evtl. wàre da ja ein ByteViewer-Control (aus System.Design.dll)
im "DisplayMode.Auto" angebrachter.
Aber sonst kannst Du auch die Prüfung eines "druckbaren"
Zeichens zum Beispiel (je nach Wunsch) folgendermassen
bestimmen:

public static bool CharIsPrintable(char c)
{
UnicodeCategory uc = char.GetUnicodeCategory(c);
if (((uc == UnicodeCategory.Control) &&
(uc != UnicodeCategory.Format)) &&
((uc != UnicodeCategory.LineSeparator) &&
(uc != UnicodeCategory.ParagraphSeparator)))
{
return (uc == UnicodeCategory.OtherNotAssigned);
}
return true;
}
_________

oder:

public static bool IsPrintableChar(char c)
{
if ((
!char.IsLetterOrDigit(c) &&
!char.IsPunctuation(c)) &&
!char.IsSymbol(c))
{
return (c == ' ');
}
return true;
}
_________

Im Fall eines nicht druckbaren Zeichens kannst
Du ggf. den hexadezimalen Code in spitzen Klammern
angeben, oder so, wie es der ByteViewer macht.

BTW: Einen String kannst Du folgendermassen in
seine Bytes umwandeln:

byte[] bytes = Encoding.Unicode.GetBytes("ABCDE");


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen