Преобразование упакованного BigInteger в другой тип - PullRequest
0 голосов
/ 06 августа 2020

У меня BigInteger заключено в object. Как я могу преобразовать эту переменную в другие типы numeri c, например int, byte и другие?

Также я хочу, чтобы это преобразование работало для всех типов без указания типа.

BigInteger не реализует IConvertible, поэтому Convert.ChangeType здесь не поможет. Afaik он предоставляет только явный оператор преобразования, поэтому единственный способ, который я вижу, - это вручную проверить, является ли тип X и приведен.

В отличие от преобразования int в / из System.Numerics.BigInteger в C# Я хочу преобразовать в несколько типов во время выполнения.

Пример кода:

ConvertInteger(object integerObj, Type targetType)
{
   ///
}

1 Ответ

0 голосов
/ 06 августа 2020

Если вы точно знаете, что это целое число, то

BigInteger big = ...;
int v = BitConverter.ToInt32(big.ToByteArray(false, false), 0)

Если нет, то вам также необходимо выполнить проверки и учесть порядок байтов big.

См. Также значение логических значений ToByteArray

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...