这不是一个功课问题,我太老了不能回家工作:)
所以,理想情况下,我试图将给定基数中的数字转换为另一个给定的基数。
有人可以分享逻辑,然后我可能自己编写代码。无法在网上找到任何令人惊讶的东西。
答案 0 :(得分:2)
答案取决于您是否可以使用基元,例如int
或long
来表示。
如果可以,算法相当简单:将基数X中的数字转换为基本表示,然后将该表示转换为基数Y.
要将数字转换为基元,请使用以下算法:
res
,并将其设置为零要转换回来,请使用此算法:
digit = num % Y
num /= Y
num
不为零时继续如果您的数字对于基元来说太大,例如int
或long
,则需要构建一个用于保存大于基元的数字的类。我建议最初使用BigInteger
,然后将其替换为您自己的实现。
答案 1 :(得分:0)
你可以试试这个:
String input = /* your input */;
int inputBase = /* your input base */;
int outputBase = /* wished output base */;
int inputInt = Integer.valueOf(input, inputBase);
String output = Integer.toString(inputInt, outputBase);
答案 2 :(得分:0)
一般算法是:
假设您在基座x
中获得了一个号码。这意味着Σa i x i
然后将n分解为基础y
:n 0 = n,b 0 = n 0 %y
然后迭代地:n i = n i-1 - b i-1 / y,b i = n i %y
你得到基础y
代表:Σb i y i
答案 3 :(得分:0)
数字是标量还是分数?
转换分数部分需要额外的工作。
与BigInteger.toString()不同,它不容易作弊, BigDecimal.toString()不接受基数。