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

前端之家收集整理的这篇文章主要介绍了c – 在基数10中打印基数4294967296整数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在C中有一个32位整数(可变大小,连续存储器,像C数组)的向量,代表基数4294967296中的数字.我想在基数10中打印.

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

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

解决方法

是的,您可以使用GMP来进行此操作.您要查找的功能是mpn_get_str:

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

现在唯一的问题是mp_limb_t的大小.根据平台,它是32位整数或64位整数.

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

或者也可以使用mpz整数类更容易. Import你的整数数组成一个大整数,然后print它返回到基数10.

原文链接:https://www.f2er.com/c/115754.html

猜你在找的C&C++相关文章