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);
}