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); } } }
You need to drop the "0x" prefix. Please see this blog entry
// 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 }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With