如何将hex值parsing为一个uint?

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

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

尝试

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

您可以使用一个重载的TryParse() ,它向TryParse调用添加一个NumberStyle参数,该调用提供了hex值的parsing。 使用NumberStyles.HexNumber它允许您传递string作为hex数字。

注意NumberStyles.HexNumber的问题是它支持使用前缀(即0x&H# )parsing值,因此在parsing值之前必须将其去掉。

基本上你会这样做:

 uint color; var hex = TextBox1.Text; if (hex.StartsWith("0x", StringComparison.CurrentCultureIgnoreCase) || hex.StartsWith("&H", StringComparison.CurrentCultureIgnoreCase)) { hex = hex.Substring(2); } bool parsedSuccessfully = uint.TryParse(hex, NumberStyles.HexNumber, CultureInfo.CurrentCulture, out color); 

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

或者像

 string hexNum = "0xFFFF"; string hexNumWithoutPrefix = hexNum.Substring(2); uint i; bool success = uint.TryParse(hexNumWithoutPrefix, System.Globalization.NumberStyles.HexNumber, null, out i); 

这里是一个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; } }