Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UInt32.TryParse() hex-number not working

Tags:

For some reason the following C# Console program always outputs:

32
False
wtf=0

What am I doing wrong?

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);         }     } } 
like image 299
S.C. Madsen Avatar asked May 10 '10 09:05

S.C. Madsen


2 Answers

You need to drop the "0x" prefix. Please see this blog entry

like image 120
Peter Avatar answered Sep 20 '22 16:09

Peter


// 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 } 
like image 21
Lance Kujala Avatar answered Sep 23 '22 16:09

Lance Kujala