代码之家  ›  专栏  ›  技术社区  ›  BurntCandy

将类似0x0EB8的字符串转换为int32类型?

  •  1
  • BurntCandy  · 技术社区  · 10 年前

    我需要从用户那里获取一个int32形式的供应商ID,它们通常看起来像这样。 0x0EB8 我可以把它写成代码

        int32 vid = 0x0EB8;
    

    这很好。但我需要以字符串的形式从用户那里获取它。当我调用System.Convert.ToInt32(“0x0EB8”)时,我得到一个类型转换异常。

    这是我的一些测试代码,它给了我例外。

            Int32 blah;
            Console.WriteLine("Please enter the Vendor ID");
            string blahString = Console.ReadLine();
            blah = Convert.ToInt32(blahString);
    

    有人知道这样做的好方法吗??

    2 回复  |  直到 10 年前
        1
  •  5
  •   dcp    10 年前

    可以将基数作为第二个参数传递。

    int blah = Convert.ToInt32(blahString, 16);
    
        2
  •  2
  •   SlashJ    10 年前

    您可以查看MSDN How to: Convert Between Hexadecimal Strings and Numeric Types 学习如何将十六进制转换为数字类型。

    该文章的示例:

    注意:您需要从原始十六进制字符串中删除“0x”

    string hexString = "0EB8";
    int num = Int32.Parse(hexString, System.Globalization.NumberStyles.HexNumber);