在基数10中打印基数4294967296整数

10 c++ gmp

我在C++中有一个32位整数的向量(可变大小,连续内存;就像一个C数组),表示基数4294967296中的数字.我想在基数10中打印它.

这些数字可能非常大,占用几兆内存.

在性能方面,最好的方法是什么?我可以使用GMP来做到这一点吗?

Mys*_*ial 7

是的,您可以使用GMP.您正在寻找的功能是mpn_get_str:

http://gmplib.org/manual/Low_002dlevel-Functions.html#Low_002dlevel-Functions

现在唯一的问题是大小mp_limb_t.它取决于平台,可以是32位整数,也可以是64位整数.

  • 如果它是32位整数,那么您可以直接在32位整数数组上调用该函数.(如果结束匹配)
  • 如果它是一个64位整数,你可能仍然只使用指针转换它.(取决于对齐和字节顺序)否则,您必须先将数组复制到64位整数数组中,然后才能调用mpn_get_str.

或者,使用mpz整数类可能更容易.导入您的整数数组到一个大的整数,然后打印它在基地10退了出去.