1

在 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转换为字节数组的函数。

C++ 中是否有任何等效的 BigInteger 类型?我正在使用 qt 框架,qt 上是否有任何大整数结构?是否可以将其转换为字节数组?

4

1 回答 1

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);
}
于 2018-07-05T12:27:36.567 回答