У меня есть символ в C #:
char foo = '2';
Теперь я хочу получить 2 в Int. Я считаю, что Convert.ToInt32 возвращает действительное десятичное значение символа, а не число 2. Следующее будет работать:
int bar = Convert.ToInt32(new string(foo, 1));
int.parse также работает только со строками.
Нет ли в C # встроенной функции для перехода от char к int, не превращая ее в строку? Я знаю, что это тривиально, но кажется странным, что нет ничего родного для прямого преобразования.
char.GetNumericValue('¼')
доходность 0,25. Радости Unicode ... ;-)char
чтобыint
без использованияstring
первого.Это преобразует его в int:
Это работает, потому что каждый символ внутренне представлен числом. Символы от «0» до «9» представлены последовательными числами, поэтому нахождение разницы между символами «0» и «2» приводит к числу 2.
источник
char
всегда UTF-16.Кто-нибудь думал об использовании
int.Parse()
иint.TryParse()
как этоДаже лучше, как это
Это намного безопаснее и менее подвержено ошибкам
источник
'0'
из символа.и вы можете создать статический метод из него:
источник
Попробуй это
источник
'9'
, но ваш код имеет9
, который не будет компилироваться.По умолчанию вы используете UNICODE, поэтому я предлагаю использовать метод неисправный
int bar = int.Parse(foo.ToString());
Даже если числовые значения одинаковы для цифр и основных латинских букв.
источник
Это преобразует в целое число и обрабатывает Unicode
CharUnicodeInfo.GetDecimalDigitValue('2')
Вы можете прочитать больше здесь .
источник
Настоящий путь это:
"theNameOfYourInt" - int, в который вы хотите преобразовать свой символ.
"theNameOfYourChar" - Char, который вы хотите использовать, чтобы он был преобразован в int.
Оставь все остальное.
источник
Принцип:
Двоичный код символов ASCII 0-9:
и если вы берете в каждом из них первые 4 младших бита (используя побитовое И с 8'b00001111, равным 15), вы получите фактическое число (0000 = 0,0001 = 1,0010 = 2, ...)
Использование:
источник
Я согласен с @Chad Grant
Также правильно, если вы преобразуете в строку, то вы можете использовать это значение как числовое, как сказано в вопросе
Я пытался создать более простой и понятный пример
char.GetNumericValue (v) возвращается как double и конвертируется в (int)
Более Advenced использование в качестве массива
источник
Сравнение некоторых методов, основанных на результате, когда символ не является цифрой ASCII:
источник
Я использую Compact Framework 3.5, а не метод "char.Parse". Я думаю, что не плохо использовать класс Convert. (См. CLR через C #, Джеффри Рихтер)
Работает с символами ASCII или Unicode
источник
Это сработало для меня:
источник
int.Parse(foo.ToString())
, кроме того, что он менее читабелен?Я видел много ответов, но они кажутся мне запутанными. Разве мы не можем просто использовать Type Casting.
Например:
источник