Int à Char en C #

96

Quelle est la meilleure façon de convertir une valeur Int en Char correspondant dans Utf16, étant donné que Int est dans la plage de valeurs valides?

Boaz
la source

Réponses:

140
(char)myint;

par exemple:

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

donne:

(char) 122 est z

gimel
la source
C'est une mauvaise réponse. c = (char) 49 est 1 pas '1'
nykwil
10
@nykwil Je ne vois rien de mal à la réponse de gimel.
Tom Lint
11
@nykwil - C'est de la désinformation. Console.WriteLine((char)49 == '1');Donnera vrai . Tout comme l' char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);utilisation de ce casting est parfaitement bien. Votre explication ne fournit pas un exemple valable de ne pas fonctionner. De plus, Console.WriteLine((char)49 == 1);est faux, ce qui rend votre commentaire sans fondement.
Travis J
62
int i = 65;
char c = Convert.ToChar(i);
Corey Trager
la source
47
Convert.ToChar effectue finalement une conversion explicite en tant que "(char) value", où "value" est votre valeur int. Avant de faire cela, il vérifie que «valeur» est comprise entre 0 et 0xffff, et lève une OverflowException si ce n'est pas le cas. L'appel de méthode supplémentaire, les vérifications de valeur / limite et OverflowException peuvent être utiles, mais sinon, les performances seront meilleures si vous utilisez simplement "(char) value".
Triynko le
17

Bien que ne répondant pas exactement à la question telle que formulée, mais si vous avez besoin ou pouvez prendre le résultat final sous forme de chaîne, vous pouvez également utiliser

string s = Char.ConvertFromUtf32(56);

qui vous donnera des paires UTF-16 de substitution si nécessaire, vous protégeant si vous êtes à l'extérieur du BMP .

Boaz
la source