Int zu Char in C #


96

Was ist der beste Weg, um einen Int-Wert in das entsprechende Char in Utf16 umzuwandeln, da der Int im Bereich der gültigen Werte liegt?

Antworten:


139
(char)myint;

beispielsweise:

Console.WriteLine("(char)122 is {0}", (char)122);

Ausbeuten:

(char) 122 ist z


Das ist eine schlechte Antwort. c = (char) 49 ist 1 nicht '1'
nykwil

9
@nykwil Ich sehe nichts falsch mit Gimels Antwort.
Tom Lint

10
@nykwil - Das sind Fehlinformationen. Console.WriteLine((char)49 == '1');Wird wahr geben . Wie wird die char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);Verwendung dieser Besetzung ist vollkommen in Ordnung. Ihre Erklärung liefert kein gültiges Beispiel dafür, dass es nicht funktioniert. Darüber hinaus Console.WriteLine((char)49 == 1);ist falsch , was Ihren Kommentar im Wesentlichen unbegründet macht.
Travis J

62
int i = 65;
char c = Convert.ToChar(i);

47
Convert.ToChar führt schließlich eine explizite Konvertierung als "(char) value" durch, wobei "value" Ihr int-Wert ist. Zuvor wird überprüft, ob "value" im Bereich von 0 bis 0xffff liegt, und es wird eine OverflowException ausgelöst, wenn dies nicht der Fall ist. Der zusätzliche Methodenaufruf, Wert- / Grenzprüfungen und OverflowException können nützlich sein. Wenn nicht, ist die Leistung besser, wenn Sie nur "(char) value" verwenden.
Triynko

17

Die Frage wird zwar nicht genau wie formuliert beantwortet, aber wenn Sie das Endergebnis als Zeichenfolge benötigen oder verwenden können, können Sie es auch verwenden

string s = Char.ConvertFromUtf32(56);

Dadurch erhalten Sie bei Bedarf Ersatz-UTF-16-Paare, die Sie schützen, wenn Sie sich außerhalb des BMP befinden .

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.