我开始使用.NET 4 System.Numerics.BigInteger Structure,但是遇到了一个问题。
我正在尝试解析一个不带符号(正数)的十六进制数字字符串。但我得到了一个负数。
例如,我执行以下两个断言:
Assert.IsTrue(System.Int64.Parse("8", NumberStyles.HexNumber, CultureInfo.InvariantCulture) > 0, "Int64");
Assert.IsTrue(System.Numerics.BigInteger.Parse("8", NumberStyles.HexNumber, CultureInfo.InvariantCulture) > 0, "BigInteger");
第一个断言成功,第二个断言失败。在
BigInteger
中,我实际上得到的是-8而不是8。问题似乎出现在16进制数以1位开始而不是0位开始(介于8和F之间的数字)。如果我添加一个前导0,一切都能完美地运行。
这是我的错误用法吗?还是
BigInteger
的一个bug?