ushort ulong uint16 tipo long hexadecimal convertir c#

c# - ulong - Cómo analizar los valores hexadecimales en un uint?



ulong c# (4)

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

no funciona ¿Qué estoy haciendo mal?


Aquí hay una función de estilo 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; } }


O como

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


Puede utilizar un TryParse() sobrecargado que agrega un parámetro NumberStyle a la llamada TryParse que proporciona el análisis de valores hexadecimales. Use NumberStyles.HexNumber que le permite pasar la cadena como un número hexadecimal.

Nota : El problema con NumberStyles.HexNumber es que no admite el análisis de valores con un prefijo (es decir, 0x , &H o # ), por lo que debe quitarlo antes de intentar analizar el valor.

Básicamente harías esto:

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);

Consulte este artículo para ver un ejemplo de cómo usar la enumeración NumberStyles: http://msdn.microsoft.com/en-us/library/zf50za27.aspx


Tratar

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