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.