uint color;
bool parsedhex = uint.TryParse(TextBox1.Text, out color);
//where Text is of the form 0xFF0000
if(parsedhex)
//...
不起作用。我做错了什么?
答案 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;
}
}