我想在 C++ 中转换 Java 代码
代码是
BigInteger value = new BigInteger(125, RandomNumber);
BigInteger clone = new BigInteger(value.toByteArray());
如何使用 gmp 库在 cpp 中编写此代码?
请任何人帮助我。谢谢。
我想在 C++ 中转换 Java 代码
代码是
BigInteger value = new BigInteger(125, RandomNumber);
BigInteger clone = new BigInteger(value.toByteArray());
如何使用 gmp 库在 cpp 中编写此代码?
请任何人帮助我。谢谢。
使用 C++,您可以做到这一点
#include <gmpxx.h>
#include <gmp.h>
#include <iostream>
using namespace std;
int main(){
mpz_class value;
mpz_class clone;
gmp_randclass r(gmp_randinit_default);
value = r.get_z_bits(125);
clone = value;
cout << value << endl;
cout << clone << endl;
return 0;
}
并使用 g++ file.cpp -lgmpxx -lgmp 编译
安装 libgmpxx.a 将 --enable-cxx 放到 ./configure 的构建选项中
这是来自维基百科的抄本
下面是一个 C 代码示例,展示了使用 GMP 库来乘法和打印大数:
#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>
int main(void)
{
mpz_t x;
mpz_t y;
mpz_t result;
mpz_init(x);
mpz_init(y);
mpz_init(result);
mpz_set_str(x, "7612058254738945", 10);
mpz_set_str(y, "9263591128439081", 10);
mpz_mul(result, x, y);
gmp_printf("\n %Zd\n*\n %Zd\n--------------------\n%Zd\n\n", x, y, result);
/* free used memory */
mpz_clear(x);
mpz_clear(y);
mpz_clear(result);
return EXIT_SUCCESS;
}
此代码计算 7612058254738945 × 9263591128439081 的值。
编译和运行这个程序会得到这个结果。(如果在 Unix 类型的系统上编译,则使用 -lgmp 标志。)
7612058254738945
*
9263591128439081
--------------------
70514995317761165008628990709545