So erhalten Sie ein Zeichen aus einem ASCII-Zeichencode in c #


74

Ich versuche, eine Datei in c # zu analysieren, deren Feld- (Zeichenfolgen-) Arrays durch die ASCII-Zeichencodes 0, 1 und 2 getrennt sind (in Visual Basic 6 können Sie diese mithilfe von Chr (0) oder Chr (1) usw. generieren.)

Ich weiß, dass Sie für den Zeichencode 0 in c # Folgendes tun können:

char separator = '\0';

Aber das funktioniert nicht für die Zeichencodes 1 und 2?

Antworten:


145

Zwei Optionen:

char c1 = '\u0001';
char c1 = (char) 1;

2
Was ist mit char sep = '\ x32'; ?
Ngoozeff

3
@ngoozeff: Ich mag es \xaus verschiedenen Gründen nicht und würde nicht empfehlen, es zu verwenden.
Jon Skeet

7
LOL - Es macht mich deprimiert, Ihnen noch MEHR Punkte zu geben, Jon, aber trotzdem danke für die Antwort: P
Jimbo

22
Wahrscheinlich für alle klar - aber nur um es explizit zu sagen. Bei der ersten Option in dieser Antwort ist die Zahl der hexadezimale Zeichencode. Bei der zweiten Option handelt es sich um eine Dezimalstelle. Offensichtlich 1 (dezimal) = 1 (hex), aber für höhere Codes ist es nicht! zB: char c = '\u0021'ist äquivalent zu char c = (char)33ist äquivalent zu char c = '!'
James S

36

Sie können einfach schreiben:

char c = (char) 2;

oder

char c = Convert.ToChar(2);

oder komplexere Option nur für die ASCII-Codierung

char[] characters = System.Text.Encoding.ASCII.GetChars(new byte[]{2});
char c = characters[0];

1
Angesichts der Tatsache, dass es sich um zwei spezifische Werte handelt, die kleiner als 128 sind, scheint die letztere Option unnötig langwierig zu sein. Unicode wurde entwickelt, um mit ASCII übereinzustimmen.
Jon Skeet

1
Es ist gut, wenn Sie mehr als 1 Byte oder ein Array konvertieren möchten.
Danon

22

Es ist wichtig zu beachten, dass in C # der Zeichentyp als Unicode UTF-16 gespeichert ist.

Von der ASCII-äquivalenten Ganzzahl zu char

char c = (char)88;

oder

char c = Convert.ToChar(88)

Von char zu ASCII äquivalenter Ganzzahl

int asciiCode = (int)'A';

Das Literal muss ASCII-äquivalent sein. Zum Beispiel:

string str = "Xสีน้ำเงิน";
Console.WriteLine((int)str[0]);
Console.WriteLine((int)str[1]);

wird gedruckt

X
3626

Erweiterte ASCII-Bereiche reichen von 0 bis 255.

Vom Standard-UTF-16-Literal bis zum Zeichen

Verwenden des Symbols

char c = 'X';

Verwenden des Unicode-Codes

char c = '\u0058';

Hexadezimal verwenden

char c = '\x0058';
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.