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.