int bt;
 bt = Console.Read(); 
Console.WriteLine(bt);
 我输入 45
 输出地是52
 真的比较奇怪,我是菜鸟,请教高手

解决方案 »

  1.   

    强转下,bt= Convert.ToInt32(Console.Read());
    再试下.
      

  2.   

    ASC|| 码的问题么,我看着像,试试都强转为nvarchar呢
      

  3.   

    Console.Read();  
    你输入45
    Read()是按字符读取,也就是读取了第一个字符4,而返回的则是ASCII码
    4的ASCII是52
      

  4.   

    因为你接收了Console.Read()的返回值,这个返回值并不是你直接输入的            Console.WriteLine(Console.ReadLine());
                Console.ReadLine();
      

  5.   

    楼主试一下下面的两种写法的差异:
    Console.Write(Console.ReadLine());Console.Write(Console.Read());你会发现前一种写法,你输入什么,输出就是什么
    而后一种写法就会像你说的一样。主要的差异在于两种的函数原型不一样:
    public static int Read ();
    输入流中的下一个字符;如果当前没有更多的字符可供读取,则为负一 (-1)。
    public:static String^ ReadLine ()
    输入流中的下一行字符;如果没有更多的可用行,则为 空引用(在 Visual Basic 中为 Nothing)。所以,Read读入的是将字符转化为整形的ASCII码
    ReadLine直接读入的输入字符
      

  6.   

    这里API和源码例子
    一个英文的,一个翻译的:
    http://apicodecn.gicp.net/class.do?api=selectByfatherIndex&father=15056
    http://apicode.gicp.net/class.do?api=selectByfatherIndex&father=15056
      

  7.   


                int bt;
                bt =Convert.ToInt16( Console.ReadLine());
                Console.WriteLine(bt);
                Console.ReadLine();
      

  8.   

    5楼正解
    用下面这个你看一下输出值就明白了。
    Console.WriteLine(char.ConvertFromUtf32(bt));
      

  9.   

            static void Main(string[] args)
            {
                int bt;
                bt = int.Parse(Console.ReadLine());
                Console.WriteLine("{0:G}", bt);
            }
      

  10.   

    还有一种方式
    Convert.ToChar(bt);