2016-07-27 3 views
2

написать простой код и нужно, чтобы каждый номер в строке как Integer Но когда я пытаюсь использовать Convert.ToInt32() это дать мне другое значениеПреобразование строки получение Неверное значение

Пример:

string x="4567";   
Console.WriteLine(x[0]); 

результат будет , но если я пытаюсь использовать Преобразовать

Console.WriteLine(Convert.ToInt32(x[0])); 

it Дайте мне !!

Я пытаюсь использовать int.TryParse() и его же

+0

Значение ascii 4 равно 52. http://www.theasciicode.com.ar/ascii-printable-characters/number-four-ascii-code-52.html –

+0

http://stackoverflow.com/questions/ 3665757/how-to-convert-char-to-int –

ответ

2

Согласно docs:

Метод ToInt32 (Char) возвращает 32-разрядное целое число со знаком, которое представляет кодированный код кода UTF-16 аргумента значения. Если значение не является низким суррогатом или высоким суррогатом, это возвращаемое значение также представляет собой кодовую точку кода Юникода.

Для того, чтобы получить 4, вы должны преобразовать его в строку перед преобразованием в int32:

Console.WriteLine(Convert.ToInt32(x[0].ToString())); 
-1

х Isnt х [0], х [0] является первым символом, '4', который является 52.

+0

Что мне делать, чтобы получить 4? –

+0

Convert.ToInt32 (x.Substring (0, 1)); – tim

0

вы можете сделать в качестве альтернативы этот способ перебора всех символов в строке

foreach (char c in x) 
{ 
    Console.WriteLine(c); 
} 

напечатает 4,5,6,7

И как это было предложено в ранее ответе перед преобразованием в целом сделать это как жала с o он не возвращает код ascii

0

A char является внутренним short integer его ASCII Представление.

Если вы передаете/конвертируете (явно или неявно) символ в int, вы получите его значение Ascii. Пример Convert.ToInt32('4') = 52

Но при печати на консоль, вы используете это метод ToString() неявно, так что вы на самом деле печать ASCII символа «4». Пример: Console.WriteLine (x [0]) эквивалентен консоли.WriteLine ("4")

Попробуйте использовать ASCII письмо, так что вы заметите разницу ясно:

  Console.WriteLine((char)('a')); // a 
      Console.WriteLine((int)('a')); // 97 

Теперь играть с char математике:

  Console.WriteLine((char)('a'+5)); // f 
      Console.WriteLine((int)('a'+5)); // 102 

Bottom линии, просто используйте int digit = int.Parse(x[0]);

Или забавный (но менее безопасный) способ: int digit = x[0] - '0';

Смежные вопросы