首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将任意大整数从任意基数转换为不同的基数?

如何将任意大整数从任意基数转换为不同的基数?
EN

Stack Overflow用户
提问于 2013-11-11 04:58:25
回答 1查看 536关注 0票数 1

我有一个基数为n(无符号)的整数,长度为数十万个字符。

如何将这个数字(从文件中读取的字符串)转换为2-256之间的任意基数?当然是在合理的时间内。

GMP文库仅支持碱基2-62。

EN

回答 1

Stack Overflow用户

发布于 2013-11-11 05:15:43

GMP对非常大的整数使用a clever divide-and-conquer radix change algorithm

使用相同的基本概念来做一些事情并不难。将基数r和输入数字x命名为。

让每个irp[i] = r^(2^i)向上,直到rp[i]的位数大约是原始位数的一半;将最后一个称为rp[n-1]。减少模数rp[n-1]的个数。然后,高2^(n-1)基数r位是转换为基数rx / rp[n-1]的基数位,低基r位是转换为基数rx % rp[n-1]的基数位。请注意,您只需计算一次rp

这比一次提取一个数字要高效得多,因为我们将一个k-bit数减少为两个粗略的k/2-bit数,而不是一个log(r)-bit数和一个k-log(r)-bit数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19895113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档