C # 'da Char için Int


97

Int geçerli değerler aralığında olduğu göz önüne alındığında, bir Int değerini Utf16'daki karşılık gelen Char'a dönüştürmenin en iyi yolu nedir?

Yanıtlar:


142
(char)myint;

Örneğin:

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

verim:

(karakter) 122, z


Bu kötü bir cevap. c = (char) 49, 1 değil '1'
— nykwil

10
@nykwil Gimel'in cevabında yanlış bir şey görmüyorum.
— Tom Lint 15

11
@nykwil - Bu yanlış bilgidir. TrueConsole.WriteLine((char)49 == '1'); verecek . İrade olarak bu döküm kullanılması gayet olumlu. Açıklamanız, işe yaramadığına dair geçerli bir örnek sağlamıyor. Dahası, bir sahte esasen yorumunuz asılsız yapar. char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);Console.WriteLine((char)49 == 1);
— Travis J

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

47
Convert.ToChar sonunda "(karakter) değeri" olarak açık bir dönüşüm gerçekleştirir, burada "değer" sizin int değerinizdir. Bunu yapmadan önce, "değer" in 0 ila 0xffff aralığında olup olmadığını kontrol eder ve değilse bir OverflowException oluşturur. Ekstra yöntem çağrısı, değer / sınır kontrolleri ve OverflowException yararlı olabilir, ancak değilse, yalnızca "(char) değeri" kullanırsanız performans daha iyi olacaktır.
— Triynko

17

Formüle edildiği gibi soruyu tam olarak cevaplamasa da, ancak ihtiyacınız varsa veya son sonucu dize olarak alabilirseniz,

string s = Char.ConvertFromUtf32(56);

bu, gerekirse size UTF-16 çiftlerini verecek ve BMP'nin dışındaysanız sizi koruyacaktır .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.