请问大神
 string sss=Console.ReadLine();
            char[] ch = sss.ToCharArray();
            int aaa=ch [0]*7;假如我输入的是,330
那么,aaa最后输出为什么不是21??????而是一个很大的数????

解决方案 »

  1.   

    单步调试一下,你会看到每个变量的变化,
     int aaa=ch [0]*7;//如果你输入的是330,那么ch[0]是51,,51*7=357。
      

  2.   

    转成对应的asc码值了吧 3按键对应51
      

  3.   

    可以这样:
     string sss = Console.ReadLine();
                char[] ch = sss.ToCharArray();
                int aaa = (Convert.ToInt32(ch[0].ToString())) * 7;
                Console.WriteLine(aaa);
      

  4.   

    是的,ch[0]是字符‘3’对应数字51,所以是51*7你可以这样   string sss = Console.ReadLine();
                char[] ch = sss.ToCharArray();
                int aaa = (ch[0]-'0') * 7;
      

  5.   

    ToCharArray();
    是unicode编码,需要转换。
      

  6.   

    对。方法我自己已经实现了。我是用for (i = 0; i < ss.Length; i++)
                    {
                        sum += ss[i] * Convert.ToInt32(identity.Substring(i, 1));
                    }我是想知道为什么会先转化成ASCII码值????
      

  7.   

    ch[0]的实际值是51 而不是‘3’所以aaa是357 你需要做转换
      

  8.   

    对。方法我自己已经实现了。我是用for (i = 0; i < ss.Length; i++)
                    {
                        sum += ss[i] * Convert.ToInt32(identity.Substring(i, 1));
                    }我是想知道为什么会先转化成ASCII码值????
    http://msdn.microsoft.com/zh-cn/library/system.string.tochararray%28v=VS.80%29.aspx
    tochararray方法会转化为unicode编码,因此需要转换。