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?

Boas
quelle

Antworten:

139
(char)myint;

beispielsweise:

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

Ausbeuten:

(char) 122 ist z

gimel
quelle
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);
Corey Trager
quelle
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 .

Boas
quelle