Int до Char в C #


96

Який найкращий спосіб перетворити значення Int на відповідний Char в Utf16, враховуючи, що Int знаходиться в діапазоні допустимих значень?

Відповіді:


139
(char)myint;

наприклад:

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

врожайність:

(char) 122 - це z


Це погана відповідь. c = (char) 49 - це 1, а не '1'
nykwil

10
@nykwil Я не бачу нічого поганого у відповіді Гімеля.
Том Лінт,

11
@nykwil - Це дезінформація. Console.WriteLine((char)49 == '1');Дасть Правда . Як буде char c = (char)49; string s = "1two3"; Console.WriteLine(c == s[0]);Використовувати цей акторський склад абсолютно нормально. Пояснення не містить валідного прикладу того, як він не працює. Крім того, Console.WriteLine((char)49 == 1);це брехня , яка по суті робить свій коментар безпідставним.
Тревіс Дж.

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

47
Convert.ToChar врешті-решт виконує явне перетворення як "(char) value", де "value" - це ваше значення int. Перш ніж це зробити, він перевіряє, чи "значення" знаходиться в діапазоні від 0 до 0xffff, і видає OverflowException, якщо це не так. Додатковий виклик методу, перевірка значення / межі та OverflowException можуть бути корисними, але якщо ні, то продуктивність буде кращою, якщо ви просто використовуєте значення "(char)".
Трійко

17

Хоча і не точно відповісти на запитання так, як сформульовано, але якщо вам потрібно або можете прийняти кінцевий результат як рядок, ви також можете використовувати

string s = Char.ConvertFromUtf32(56);

що дасть вам, якщо потрібно, сурогатні пари UTF-16, захищаючи вас, якщо ви знаходитесь поза стороною BMP .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.