Int в Char в C #

96

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

Вооз
источник

Ответы:

140
(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);это ложь, что, по сути, делает ваш комментарий необоснованным.
Travis J
63
int i = 65;
char c = Convert.ToChar(i);
Кори Трейджер
источник
47
Convert.ToChar в конечном итоге выполняет явное преобразование как «(char) value», где «value» - это ваше целое значение. Перед этим он проверяет, находится ли «значение» в диапазоне от 0 до 0xffff, и выдает исключение OverflowException, если это не так. Дополнительный вызов метода, проверка значений / границ и OverflowException могут быть полезны, но если нет, производительность будет лучше, если вы просто используете «(char) value».
Трийнко
17

Хотя это не совсем ответ на поставленный вопрос, но если вам нужен или вы можете принять конечный результат в виде строки, вы также можете использовать

string s = Char.ConvertFromUtf32(56);

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

Вооз
источник