Int to Char w C #

96

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

Boaz
źródło

Odpowiedzi:

140
(char)myint;

na przykład:

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

plony:

(znak) 122 jest z

gimel
źródło
To zła odpowiedź. c = (znak) 49 to 1, a nie „1”
nykwil.
10
@nykwil Nie widzę nic złego w odpowiedzi gimel.
Tom Lint
11
@nykwil - To jest dezinformacja. Console.WriteLine((char)49 == '1');Da Prawda . Tak char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);samo jak użycie tego odlewu jest całkowicie w porządku. Twoje wyjaśnienie nie stanowi ważnego przykładu, że nie działa. Co więcej, Console.WriteLine((char)49 == 1);jest fałszywe, co zasadniczo sprawia, że ​​Twój komentarz jest bezpodstawny.
Travis J,
62
int i = 65;
char c = Convert.ToChar(i);
Corey Trager
źródło
47
Convert.ToChar ostatecznie przeprowadza jawną konwersję jako „wartość (znak)”, gdzie „wartość” jest wartością int. Zanim to zrobi, sprawdza, czy „wartość” mieści się w zakresie od 0 do 0xffff, a jeśli tak nie jest, zgłasza wyjątek OverflowException. Dodatkowe wywołanie metody, sprawdzanie wartości / granic i OverflowException mogą być przydatne, ale jeśli nie, wydajność będzie lepsza, jeśli użyjesz po prostu „(char) value”.
Triynko,
17

Chociaż nie jest to dokładna odpowiedź na sformułowane pytanie, ale jeśli potrzebujesz lub możesz przyjąć wynik końcowy jako ciąg znaków, możesz również użyć

string s = Char.ConvertFromUtf32(56);

który w razie potrzeby da ci zastępcze pary UTF-16, chroniąc cię, jeśli jesteś poza BMP .

Boaz
źródło