微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/c/115754.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐