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.