C ++ BigInteger到字节数组

时间:2017-02-23 13:13:43

标签: c++ arrays qt boost boost-multiprecision

在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上有任何大整数结构吗?是否可以将其转换为字节数组?

1 个答案:

答案 0 :(得分: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);
}