Int a Char en C #


96

¿Cuál es la mejor manera de convertir un valor Int al Char correspondiente en Utf16, dado que el Int está en el rango de valores válidos?

Respuestas:


139
(char)myint;

por ejemplo:

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

rinde:

(carácter) 122 es z


Esta es una mala respuesta. c = (char) 49 es 1 no '1'
nykwil

10
@nykwil No veo nada malo en la respuesta de Gimel.
Tom Lint

11
@nykwil - Eso es desinformación. Console.WriteLine((char)49 == '1');Dará True . Al igual que char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);usar este yeso, está perfectamente bien. Su explicación no proporciona un ejemplo válido de que no funcione. Además, Console.WriteLine((char)49 == 1);es falso, lo que esencialmente hace que su comentario sea infundado.
Travis J

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

47
Convert.ToChar finalmente realiza una conversión explícita como "valor (char)", donde "valor" es su valor int. Antes de hacerlo, verifica que el "valor" esté en el rango de 0 a 0xffff, y lanza una OverflowException si no lo está. La llamada al método adicional, las comprobaciones de valor / límite y OverflowException pueden ser útiles, pero si no, el rendimiento será mejor si solo usa "(char) value".
Triynko

17

Aunque no responde exactamente a la pregunta como se formuló, pero si necesita o puede tomar el resultado final como una cadena, también puede usar

string s = Char.ConvertFromUtf32(56);

que le dará pares UTF-16 sustitutos si es necesario, protegiéndolo si está fuera del BMP .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.