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?

Odpowiedzi:


140
(char)myint;

na przykład:

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

plony:

(znak) 122 jest z


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

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 .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.