Я начал использовать .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");
Первое утверждение успешно, второе утверждение не выполнено. Я на самом деле получаю -8 вместо 8 в BigInteger
.
Проблема, кажется, заключается в том, что шестнадцатеричное число начинается с 1, а не 0 бит (цифра от 8 до F включительно). Если я добавлю ведущий 0, все работает отлично.
Это плохое использование с моей стороны? Это ошибка в BigInteger
?