我已经开始使用 .NET 4 System.Numerics.BigInteger 结构,但遇到了问题。
我正在尝试解析一个包含没有符号(正)的十六进制数字的字符串。我得到一个负数。
例如,我执行以下两个断言:
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");
第一个断言成功,第二个断言失败。我实际上得到 -8 而不是 8 中的BigInteger
.
问题似乎是当我是十六进制以 1 位而不是 0 位(包括 8 和 F 之间的数字)开头时。如果我添加前导 0,则一切正常。
这对我来说是一个不好的用法吗?它是一个错误BigInteger
吗?