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

时间:2011-10-22 23:16:17

标签: c++ gmp

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

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

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

1 个答案:

答案 0 :(得分: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整数类可能更容易。 Import将整数数组转换为一个大整数,然后print将它返回到基数10中。