将字符串或char转换为int

时间:2013-03-14 08:54:51

标签: c# type-conversion

我很困惑

string temp = "73";
int tempc0 = Convert.ToInt32(temp[0]);
int tempc1 = Convert.ToInt32(temp[1]);
MessageBox.Show(tempc0 + "*" + tempc1 + "=" + tempc0*tempc1);

我希望:7*3=21

然后我收到:55*51=2805

7 个答案:

答案 0 :(得分:5)

55和51是他们在ascii图表中的位置。 链接到图表 - http://kimsehoon.com/files/attach/images/149/759/007/ascii%281%29.png

尝试使用int.parse

答案 1 :(得分:4)

这是字符7和3的ASCII值。如果您想要数字表示,那么您可以将每个字符转换为字符串,然后使用Convert.ToString

string temp = "73";
int tempc0 = Convert.ToInt32(temp[0].ToString());
int tempc1 = Convert.ToInt32(temp[1].ToString());
MessageBox.Show(tempc0 + "*" + tempc1 + "=" + tempc0*tempc1);

答案 2 :(得分:1)

这有效:

    string temp = "73";
    int tempc0 = Convert.ToInt32(temp[0].ToString());
    int tempc1 = Convert.ToInt32(temp[1].ToString());
    Console.WriteLine(tempc0 + "*" + tempc1 + "=" + tempc0 * tempc1);           

你必须使用ToString()来获取实际的字符串表示。

答案 3 :(得分:1)

您将获得7和3的ASCII码,分别为55和51.

使用int.Parse()将char或字符串转换为值。

int tempc0 = int.Parse(temp[0].ToString());
int tempc1 = int.Parse(temp[1].ToString());

int product = tempc0 * tempc1; // 7 * 3 = 21

int.Parse()不接受char作为参数,因此您必须先转换为string,或使用temp.SubString(0, 1)代替。

答案 4 :(得分:1)

这比使用int.Parse()Convert.ToInt32()更有效,并且计算效率更高:

string temp = "73";
int tempc0 = temp[0] - '0';
int tempc1 = temp[1] - '0';
MessageBox.Show(tempc0 + "*" + tempc1 + "=" + tempc0 * tempc1);

答案 5 :(得分:1)

将字符转换为整数可以获得Unicode字符代码。如果将字符串转换为整数,则将其解析为数字:

string temp = "73";
int tempc0 = Convert.ToInt32(temp.Substring(0, 1));
int tempc1 = Convert.ToInt32(temp.Substring(1, 1));

答案 6 :(得分:1)

当您撰写string temp = "73"时,您的temp[0]temp[1]值为char

来自Convert.ToInt32 Method(Char)方法

  

将指定的Unicode字符的值转换为   等效 32位有符号整数。

这意味着将char转换为int32会为您提供unicode字符代码。

您只需使用.ToString()方法temp[0]temp[1]值即可。等;

string temp = "73";
int tempc0 = Convert.ToInt32(temp[0].ToString());
int tempc1 = Convert.ToInt32(temp[1].ToString());
MessageBox.Show(tempc0 + "*" + tempc1 + "=" + tempc0*tempc1);

这是 DEMO