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? И можно ли преобразовать его в байтовый массив?

0

Решение

Не знаю какой-либо конкретной функции, но оба приведенных ниже случая сработали для преобразования 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);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]