如何将十六进制值解析为uint?

时间:2008-09-19 01:12:01

标签: c#

uint color; 
bool parsedhex = uint.TryParse(TextBox1.Text, out color); 
//where Text is of the form 0xFF0000
if(parsedhex)
   //...

不起作用。我做错了什么?

4 个答案:

答案 0 :(得分:107)

尝试

Convert.ToUInt32(hex, 16)  //Using ToUInt32 not ToUInt64, as per OP comment

答案 1 :(得分:43)

您可以使用重载TryParse()TryParse调用添加NumberStyle参数,该调用提供十六进制值的解析。使用NumberStyles.HexNumber允许您将字符串作为十六进制数传递。

注意NumberStyles.HexNumber的问题是不支持支持使用前缀解析值(即。0x,{{ 1}}或&H),因此您必须在尝试解析值之前将其删除。

基本上你会这样做:

#

有关如何使用NumberStyles枚举的示例,请参阅此文章:http://msdn.microsoft.com/en-us/library/zf50za27.aspx

答案 2 :(得分:13)

或者喜欢

string hexNum = "0xFFFF";
string hexNumWithoutPrefix = hexNum.Substring(2);

uint i;
bool success = uint.TryParse(hexNumWithoutPrefix, System.Globalization.NumberStyles.HexNumber, null, out i);

答案 3 :(得分:4)

这是一个try-parse样式函数:

    private static bool TryParseHex(string hex, out UInt32 result)
    {
        result = 0;

        if (hex == null)
        {
            return false;
        }

        try
        {
            result = Convert.ToUInt32(hex, 16);

            return true;
        }
        catch (Exception exception)
        {
            return false;
        }
    }