UInt32. TryParse () шестнадцатеричное число, не работающее

По некоторым причинам следующая Консольная программа C# всегда выводы:

32
Ложь
wtf=0

Что я делаю неправильно?

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Convert.ToUInt32("0x20", 16));
            UInt32 wtf = 0;
            Console.WriteLine(UInt32.TryParse("0x20",
                              NumberStyles.HexNumber, // I've tried also AllowHexSpecifier
                              CultureInfo.InvariantCulture,  // I've also tried CurrentCulture
                              out wtf));
            Console.WriteLine("wtf={0}", wtf);
        }
    }
}
14
задан S.C. Madsen 10 May 2010 в 09:15
поделиться

4 ответа

Вам нужно убрать префикс "0x". См. эту запись в блоге

23
ответ дан 1 December 2019 в 08:15
поделиться

Избавьтесь от ведущего "0x" в строке, которую вы пытаетесь разобрать.

2
ответ дан 1 December 2019 в 08:15
поделиться

See also http://msdn.microsoft.com/en-us/library/kadka85s%28v=VS.100%29.aspx В примере внизу страницы:

Попытка преобразования '0x8F8C' не удалась.

1
ответ дан 1 December 2019 в 08:15
поделиться
// stupid but effective way to improve the parsing
char[] _trim_hex = new char[] {'0','x'};
int temp;

if (int.TryParse(value.TrimStart(_trim_hex), NumberStyles.HexNumber, null, out temp))
{
    // temp is good
}
7
ответ дан 1 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: