2008-11-14 14 views
74

Jaki jest najlepszy sposób przekonwertowania wartości Int na odpowiadającą Char w Utf16, biorąc pod uwagę, że Int jest w zakresie prawidłowych wartości?Int do Char w C#

Odpowiedz

104
(char)myint; 

na przykład:

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

Wynik:

(cząstki węgla) 122 z

+0

To jest zła odpowiedź. c = (char) 49 is 1 not '1' – nykwil

+6

@nykwil Nie widzę niczego złego w odpowiedzi gimela. –

+3

@nykwil - To jest dezinformacja. 'Console.WriteLine ((char) 49 == '1');' Poda ** True **. Podobnie jak "char c = (char) 49; \t string s = "1two3"; \t Console.WriteLine (c == s [0]); 'Używanie tej obsady jest całkowicie w porządku. Twoje wyjaśnienie nie dostarcza prawidłowego przykładu, że nie działa. Ponadto 'Console.WriteLine ((char) 49 == 1);' to * false * co zasadniczo powoduje, że twój komentarz jest bezpodstawny. –

50
int i = 65; 
char c = Convert.ToChar(i); 
+36

Convert.ToChar ostatecznie wykonuje jawną konwersję jako "(char) value", gdzie "value" to twoja wartość int. Zanim to zrobi, sprawdza, czy "wartość" mieści się w zakresie od 0 do 0xffff i generuje wyjątek OverflowException, jeśli tak nie jest. Dodatkowe wywołanie metody, sprawdzanie wartości/granicy i wyjątek OverflowException mogą być przydatne, ale jeśli nie, wydajność będzie lepsza, jeśli po prostu użyjesz "(char) value". – Triynko

12

Chociaż nie jest dokładnie odpowiedzi na pytanie sformułowane, ale jeśli potrzebujesz lub możesz wziąć końcowy wynik jako ciąg można również użyć

string s = Char.ConvertFromUtf32(56) 

który daje zastępczych par UTF16 razie potrzeby, chroniąc cię, jeśli jesteś na stronie BMP.