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.