2016-07-27 64 views
2

我寫一個簡單的代碼,並需要獲得字符串中的每個數字作爲整數 但是當我嘗試使用Convert.ToInt32()它給我的另一個值將字符串轉換得到錯誤值

例如:

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

結果將是,但如果我嘗試使用轉換

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

it給我 !!

我嘗試使用int.TryParse()和其相同的

+0

4的ascii值是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編碼的代碼單元。如果值不是低代理或高代理,則此返回值也代表Unicode代碼值的值。

爲了得到4,你必須轉換爲INT32之前將其轉換爲字符串:

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

X心不是X [0],X [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表示。

如果您將char(顯式或隱式)轉換爲int類型,您將得到它的Ascii值。示例Convert.ToInt32('4') = 52

但是,當您將其打印到控制檯時,隱式使用它的ToString()方法,因此實際上正在打印ASCII字符'4'。例如:Console.WriteLine(x [0])等同於Console。的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 

底線,只使用int digit = int.Parse(x[0]);

還是有趣的(但不太安全)的方式:int digit = x[0] - '0';