有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中,将一个基中的数字转换为另一个基,而不使用库

这不是家庭作业问题,我太老了,不能在家工作:)

所以,理想情况下,我试着把一个给定基数中的一个数转换成另一个给定基数

有人能分享一下逻辑吗?也许我可以自己写代码。在网上找不到任何令人惊讶的东西


共 (4) 个答案

  1. # 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. # 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. # 3 楼答案

    答案取决于是否可以使用原语,例如intlong来表示

    如果可以的话,算法相当简单:将基数X中的数字转换为基本表示,然后将该表示转换为基数Y

    要将数字转换为基元,请使用以下算法:

    • 制作一个运行总数res,并将其设置为零
    • 从左到右遍历代表基数X中数字的字符串
    • 将每个“数字”(可以用字母表示)转换为其数值
    • 将运行总数乘以X,然后将数字的数值相加

    要转换回,请使用以下算法:

    • 制作一个字符串生成器
    • 通过获取digit = num % Y删除最后一位的值
    • 将数字值转换为数字字符(可能是字母)
    • 将数字字符附加到字符串生成器
    • 使用num /= Y从表示中删除最后一个数字
    • num不是零时继续
    • 在字符串生成器中反转字符串

    如果您的数字对于intlong等基元来说太大,则需要构建一个类来容纳大于基元的数字。我建议最初使用BigInteger,然后用自己的实现替换它

  4. # 4 楼答案

    这个数字是标量还是分数

    转换分数部分需要额外的工作

    和BigInteger不同,作弊并不容易。toString(), 大十进制。toString()不带基数