Pytanie Int do Char w C #


Jaki jest najlepszy sposób konwersji wartości Int na odpowiednią wartość Char w Utf16, biorąc pod uwagę, że wartość Int jest w zakresie prawidłowych wartości?


76
2017-11-14 11:07


pochodzenie




Odpowiedzi:


(char)myint;

na przykład:

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

wydajność:

(char) 122 to z


111
2017-11-14 11:16



To jest zła odpowiedź. c = (char) 49 to 1 nie "1" - nykwil
@nykwil Nie widzę nic złego w odpowiedzi gimela. - Tom Lint
@nykwil - To jest dezinformacja. Console.WriteLine((char)49 == '1'); Da Prawdziwe. Jak będzie char c = (char)49; string s = "1two3"; 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); jest fałszywy co zasadniczo powoduje, że twój komentarz jest bezpodstawny. - Travis J


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

51
2017-11-14 11:15



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


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

string s = Char.ConvertFromUtf32(56)

co da ci zastępcze pary utf16 w razie potrzeby, chroniąc cię, jeśli jesteś poza domem BMP.


14
2017-11-14 12:44