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?

Réponses:


140
(char)myint;

par exemple:

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

donne:

(char) 122 est z


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);

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 .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.