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 .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.