我在C中有一个32位整数(可变大小,连续存储器,像C数组)的向量,代表基数4294967296中的数字.我想在基数10中打印.
这些数字可能非常大,并占用了几兆字节的内存.
解决方法
是的,您可以使用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.