Как разобрать шестнадцатеричные значения в uint?
uint color;
bool parsedhex = uint.TryParse(TextBox1.Text, out color);
//where Text is of the form 0xFF0000
if(parsedhex)
//...
не работает. Что я делаю не так?
4 ответа:
вы можете использовать перегруженный
TryParse()
который добавляет параметр NumberStyle кTryParse
С разбора шестнадцатеричных значений. ИспользуйтеNumberStyles.HexNumber
что позволяет передать строку в виде шестнадцатеричного числа.Примечание: проблема с
NumberStyles.HexNumber
что это не поддержка парсинга значений с префиксом (т. е.0x
,&H
или#
), так что вы должны снять его, прежде чем пытаться разобрать значение.в основном вы бы сделали это:
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