在Java中,将一个基中的数字转换为另一个基,而不使用库 1 月 Questions & Answers 2769 这不是家庭作业问题,我太老了,不能在家工作:) 所以,理想情况下,我试着把一个给定基数中的一个数转换成另一个给定基数 有人能分享一下逻辑吗?也许我可以自己写代码。在网上找不到任何令人惊讶的东西
# 1 楼答案 你可以试试这个: 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 楼答案 一般算法是: 假设你在basex中得到一个数字。它的意思是∑aixi 首先,通过迭代计算上述公式,将数字计算为长整数或大整数:n=a0+x*a1+李> 然后将n分解为碱基y:n0=n,b0=n0%y 然后迭代:ni=ni-1-bi-1/y,bi=ni%y 你可以得到基本的y表示:∑biyi
# 3 楼答案 答案取决于是否可以使用原语,例如int或long来表示 如果可以的话,算法相当简单:将基数X中的数字转换为基本表示,然后将该表示转换为基数Y 要将数字转换为基元,请使用以下算法: 制作一个运行总数res,并将其设置为零 从左到右遍历代表基数X中数字的字符串 将每个“数字”(可以用字母表示)转换为其数值 将运行总数乘以X,然后将数字的数值相加 要转换回,请使用以下算法: 制作一个字符串生成器 通过获取digit = num % Y删除最后一位的值 将数字值转换为数字字符(可能是字母) 将数字字符附加到字符串生成器 使用num /= Y从表示中删除最后一个数字 当num不是零时继续 在字符串生成器中反转字符串 如果您的数字对于int或long等基元来说太大,则需要构建一个类来容纳大于基元的数字。我建议最初使用BigInteger,然后用自己的实现替换它
# 1 楼答案
你可以试试这个:
# 2 楼答案
一般算法是:
假设你在base
x
中得到一个数字。它的意思是∑aixi然后将n分解为碱基
y
:n0=n,b0=n0%y然后迭代:ni=ni-1-bi-1/y,bi=ni%y
你可以得到基本的
y
表示:∑biyi# 3 楼答案
答案取决于是否可以使用原语,例如
int
或long
来表示如果可以的话,算法相当简单:将基数X中的数字转换为基本表示,然后将该表示转换为基数Y
要将数字转换为基元,请使用以下算法:
res
,并将其设置为零要转换回,请使用以下算法:
digit = num % Y
删除最后一位的值num /= Y
从表示中删除最后一个数字num
不是零时继续如果您的数字对于
int
或long
等基元来说太大,则需要构建一个类来容纳大于基元的数字。我建议最初使用BigInteger
,然后用自己的实现替换它# 4 楼答案
这个数字是标量还是分数
转换分数部分需要额外的工作
和BigInteger不同,作弊并不容易。toString(), 大十进制。toString()不带基数