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