Int to Char di C #

96

Apa cara terbaik untuk mengonversi nilai Int ke Char yang sesuai di Utf16, mengingat Int berada dalam kisaran nilai yang valid?

Boaz
sumber

Jawaban:

140
(char)myint;

sebagai contoh:

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

hasil:

(char) 122 adalah z

gimel
sumber
Ini jawaban yang buruk. c = (char) 49 adalah 1 bukan '1'
nykwil
10
@nykwil Saya tidak melihat ada yang salah dengan jawaban gimel.
Tom Lint
11
@nykwil - Itu adalah informasi yang salah. Console.WriteLine((char)49 == '1');Akan memberikan True . Seperti akan char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);Menggunakan pemeran ini baik-baik saja. Penjelasan Anda tidak memberikan contoh valid tentang tidak berfungsi. Selanjutnya, Console.WriteLine((char)49 == 1);adalah palsu yang pada dasarnya membuat komentar tak berdasar Anda.
Travis J
63
int i = 65;
char c = Convert.ToChar(i);
Corey Trager
sumber
47
Convert.ToChar akhirnya melakukan konversi eksplisit sebagai "(char) value", di mana "value" adalah nilai int Anda. Sebelum melakukannya, ia memeriksa untuk memastikan "nilai" berada dalam kisaran 0 hingga 0xffff, dan melontarkan OverflowException jika tidak. Pemanggilan metode ekstra, pemeriksaan nilai / batas, dan OverflowException mungkin berguna, tetapi jika tidak, performanya akan lebih baik jika Anda hanya menggunakan "(char) value".
Triynko
17

Meskipun tidak persis menjawab pertanyaan seperti yang dirumuskan, tetapi jika Anda membutuhkan atau dapat mengambil hasil akhirnya sebagai string, Anda juga dapat menggunakan

string s = Char.ConvertFromUtf32(56);

yang akan memberi Anda pasangan pengganti UTF-16 jika diperlukan, melindungi Anda jika Anda berada di luar BMP .

Boaz
sumber