Конвертировать char в int в C # - PullRequest
       68

Конвертировать char в int в C #

118 голосов
/ 27 октября 2008

У меня есть символ в c #:

char foo = '2';

Теперь я хочу получить 2 в int. Я считаю, что Convert.ToInt32 возвращает фактическое десятичное значение символа, а не число 2. Следующее будет работать:

int bar = Convert.ToInt32(new string(foo, 1));

int.parse работает только со строками.

Нет ли в C # встроенной функции для перехода от символа к int, не превращая его в строку? Я знаю, что это тривиально, но кажется странным, что нет ничего нативного для прямого преобразования.

Ответы [ 13 ]

0 голосов
/ 15 января 2017

Сравнение некоторых методов на основе результата, когда символ не является цифрой ASCII:

char c = '\n';                              
Debug.Print($"{c & 15}");                   // 10
Debug.Print($"{c ^ 48}");                   // 58
Debug.Print($"{c - 48}");                   // -38
Debug.Print($"{(uint)c - 48}");             // 4294967258
Debug.Print($"{char.GetNumericValue(c)}");  // -1 
0 голосов
/ 13 августа 2015

Я использую Compact Framework 3.5, и у меня нет метода char.Parse. Я думаю, что не плохо использовать класс Convert. (См. CLR через C #, Джеффри Рихтер)

char letterA = Convert.ToChar(65);
Console.WriteLine(letterA);
letterA = 'あ';
ushort valueA = Convert.ToUInt16(letterA);
Console.WriteLine(valueA);
char japaneseA = Convert.ToChar(valueA);
Console.WriteLine(japaneseA);

Работает с символами ASCII или Unicode

0 голосов
/ 26 августа 2013

Это сработало для меня:

int bar = int.Parse("" + foo);
...