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?

Jawaban:


140
(char)myint;

sebagai contoh:

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

hasil:

(char) 122 adalah z


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);

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 .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.