BigInteger.Parse() 对十六进制数给出负数
我已经开始使用 .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。
问题似乎是当我的十六进制以 1 位而不是 0 位(8 和 F 之间的数字(包括 8 和 F)开头)开始时。如果我添加前导 0,一切都会完美。
我这样使用是不是很糟糕?这是 BigInteger 中的错误吗?
I've started using .NET 4 System.Numerics.BigInteger Structure and I've encountered a problem.
I'm trying to parse a string that contains a hexadecimal number with no sign (positive). I'm getting a negative number.
For example, I do the following two asserts:
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");
The first assert succeeds, the second assert fails. I actually get -8 instead of 8 in the BigInteger
.
The problem seems to be when I'm the hexadecimal starts with 1 bit and not 0 bit (a digit between 8 and F inclusive). If I add a leading 0, everything works perfectly.
Is that a bad usage on my part? Is it a bug in BigInteger
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这正是该方法应该做的事情。
MSDN:BigInteger.Parse 方法:
It's exactly what the method is supposed to do.
MSDN: BigInteger.Parse Method: