Da int a carattere in C #


96

Qual è il modo migliore per convertire un valore Int nel Char corrispondente in Utf16, dato che Int è nell'intervallo di valori validi?

Risposte:


140
(char)myint;

per esempio:

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

rende:

(char) 122 è z


Questa è una cattiva risposta. c = (char) 49 è 1 non '1'
— nykwil

10
@nykwil Non vedo niente di sbagliato nella risposta di Gimel.
— Tom Lint

11
@nykwil - Questa è disinformazione. Console.WriteLine((char)49 == '1');Darà True . Così come char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);usare questo cast va benissimo. La tua spiegazione non fornisce un valido esempio di non funzionamento. Inoltre, Console.WriteLine((char)49 == 1);è falso che essenzialmente rende il tuo commento senza fondamento.
— Travis J

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

47
Convert.ToChar esegue infine una conversione esplicita come "(char) value", dove "value" è il tuo valore int. Prima di farlo, verifica che il "valore" sia compreso tra 0 e 0xffff e, in caso contrario, genera un'eccezione OverflowException. La chiamata al metodo extra, i controlli di valore / limite e OverflowException possono essere utili, ma in caso contrario, le prestazioni saranno migliori se si utilizza solo "(char) value".
— Triynko

17

Sebbene non risponda esattamente alla domanda come formulata, ma se hai bisogno o puoi prendere il risultato finale come stringa puoi anche usare

string s = Char.ConvertFromUtf32(56);

che ti darà coppie UTF-16 surrogate se necessario, proteggendoti se sei fuori dal BMP .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.