24

何らかの理由で、次のC#コンソールプログラムは常に出力します。

32
False
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);
        }
    }
}
4

4 に答える 4

31

「0x」プレフィックスを削除する必要があります。このブログエントリをご覧ください

于 2010-05-10T09:23:44.040 に答える
8
// 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
}
于 2010-08-25T22:06:53.633 に答える
2

解析しようとしている文字列の先頭の「0x」を削除します。

于 2010-05-10T09:25:05.050 に答える
1

http://msdn.microsoft.com/en-us/library/kadka85s%28v=VS.100%29.aspxも参照 してください。ページ下部の例では、次のようになっています。

'0x8F8C'の変換に失敗しました。

于 2010-05-10T09:26:15.250 に答える