C++ BigInteger для байтового массива

В Java есть класс BigInteger для использования больших чисел, и он имеет функцию преобразователя: toByteInteger, например так:

private static final BigInteger N = new BigInteger(HEX_N, 16);
...
byte[] digest = messageDigest.digest(N.toByteArray());

В C++ я попробовал Boost.Multiprecision использовать тип большого числа с mpz_int, но в нем нет функции, которая преобразует mpz_int в байтовый массив.

Есть ли эквивалентный тип BigInteger в C++? Я работаю с фреймворком QT, есть ли большая целочисленная структура на QT? И можно ли преобразовать его в байтовый массив?

1 ответ

Не знаю какой-либо конкретной функции, но оба приведенных ниже случая сработали для преобразования cpp_int в байтовый массив!!!

unsigned char cSHA[33], *xzh;
cpp_int ichA;
ichA = g[0];

//CONVERSION USING BINARY MATHS

for (int i = 32; i>= 1; i--)
{
    // este cast pode dar problemas em UBUNTU
    cSHA[i] = (unsigned char)(ichA & 255);
    ichA = ichA/256;
}

// OR   
//CONVERSION USING POINTER
xzh = ((unsigned char*) &ichA) + 32;

for (int i = 32; i>= 1; i--)
{
    cSHA[i] = *(xzh - i);
}
Другие вопросы по тегам