将GMP整数转换为N进制整数

Converting a GMP integer to a base N integer

本文关键字:整数 转换 GMP      更新时间:2023-10-16

GMP允许以62为基数打印mpz_t,但我想将一个数字表示为任何进制N,为此我首先需要生成一个整数数组(让我们说我将限制为2 ^ 64),所以unsigned long的数组可能会做到这一点。

例如,如果我想取任意整数并将其转换为以792为基数,我不能直接将其放入字符串中,我必须首先创建一个整数数组。

GMP中是否存在此代码,例如我需要学习的某种数学,或者我应该开始编码吗?

注:我知道使用术语"基数"是完全不相关的,而我可以使用"线性向量空间",所以它使转换毫无意义,但是在unicode中有很多符号(unicode 3.2中的95,221),所以我仍然可以找到一种方法来表示那些用单个符号。

内部,GMP的功能直接或间接调用mpn层-在这里记录:

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

mpn_get_str最多支持256个基数。所以我不认为你可以走得更高,除非你写你自己的基本转换(这不是微不足道的)。