2008-11-14 24 views
74

¿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?Int a Char en C#

Respuesta

104
(char)myint; 

por ejemplo:

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

rendimientos:

(char) 122 es z

+0

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

+6

@nykwil No veo nada malo con la respuesta de gimel. –

+3

@nykwil - Eso es información errónea. 'Console.WriteLine ((char) 49 == '1');' Dará ** True **. Al igual que 'char c = (char) 49; \t cadena s = "1two3"; \t Console.WriteLine (c == s [0]); 'Usar este modelo 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 básicamente hace que tu comentario no tenga fundamentos. –

50
int i = 65; 
char c = Convert.ToChar(i); 
+36

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

12

Aunque no responder exactamente la pregunta formulada, pero si necesitas o puedes tomar el resultado final como cadena también puede utilizar

string s = Char.ConvertFromUtf32(56) 

que le dará sustituta pares UTF16 si es necesario, que le protege si usted está fuera del lado de la BMP.