В 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? И можно ли преобразовать его в байтовый массив?
Не знаю какой-либо конкретной функции, но оба приведенных ниже случая сработали для преобразования 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);
}
Других решений пока нет …