UInt32.TryParse() 十六进制数不起作用

发布于 2024-09-01 02:44:19 字数 775 浏览 11 评论 0原文

由于某种原因,以下 C# 控制台程序始终输出:

32
错误
wtf=0

我做错了什么?

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Convert.ToUInt32("0x20", 16));
            UInt32 wtf = 0;
            Console.WriteLine(UInt32.TryParse("0x20",
                              NumberStyles.HexNumber, // I've tried also AllowHexSpecifier
                              CultureInfo.InvariantCulture,  // I've also tried CurrentCulture
                              out wtf));
            Console.WriteLine("wtf={0}", wtf);
        }
    }
}

For some reason the following C# Console program always outputs:

32
False
wtf=0

What am I doing wrong?

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Convert.ToUInt32("0x20", 16));
            UInt32 wtf = 0;
            Console.WriteLine(UInt32.TryParse("0x20",
                              NumberStyles.HexNumber, // I've tried also AllowHexSpecifier
                              CultureInfo.InvariantCulture,  // I've also tried CurrentCulture
                              out wtf));
            Console.WriteLine("wtf={0}", wtf);
        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

南街女流氓 2024-09-08 02:44:19

您需要删除“0x”前缀。请参阅此博客条目

You need to drop the "0x" prefix. Please see this blog entry

落叶缤纷 2024-09-08 02:44:19
// stupid but effective way to improve the parsing
char[] _trim_hex = new char[] {'0','x'};
int temp;

if (int.TryParse(value.TrimStart(_trim_hex), NumberStyles.HexNumber, null, out temp))
{
    // temp is good
}
// stupid but effective way to improve the parsing
char[] _trim_hex = new char[] {'0','x'};
int temp;

if (int.TryParse(value.TrimStart(_trim_hex), NumberStyles.HexNumber, null, out temp))
{
    // temp is good
}
长不大的小祸害 2024-09-08 02:44:19

去掉您要解析的字符串中的前导“0x”。

Get rid of the leading "0x" in the string you're trying to parse.

晒暮凉 2024-09-08 02:44:19

另请参阅 http://msdn.microsoft。 com/en-us/library/kadka85s%28v=VS.100%29.aspx
在页面底部的示例中:

尝试转换“0x8F8C”失败。

See also http://msdn.microsoft.com/en-us/library/kadka85s%28v=VS.100%29.aspx
In the example at the bottom of the page:

Attempted conversion of '0x8F8C' failed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文