将基数十位转换为任意数

时间:2014-11-11 00:23:24

标签: java

这里有几个类似的线程提出了像我这样的问题,但是我无法找到一个相对简单的解决方案。想知道你们是否有任何想法。


我有一些代码将采用任何十进制数字并将其转换为基数1到11中的数字。当我开始进入十六进制格式之类的东西时,我很难,因为除了数字之外我还需要字母。我确信解决方案很简单,但它目前正在逃避我。任何帮助将不胜感激。

import static java.lang.System.*;

public class TenToAny
{
    private int base10;
    private int newBase;


    public TenToAny(int ten, int base)
    {
        base10 = ten;
        newBase = base;
    }

    public void setNums(int ten, int base)
    {    
         base10 = ten;
         newBase = base;
    }

    public String getNewNum()
    {
        String newNum="";
        int original = base10;

        while(original > 0)
        {
            newNum = original%newBase + newNum;
            original = original/newBase;
        }
        return newNum;
    }

    public String toString()
    {
       String complete = base10 + " base 10 is " + getNewNum() + " in base " + newBase;

       return complete;
    }
}

2 个答案:

答案 0 :(得分:2)

我创建一个String数组,使用所有必需的数字/字母进行初始化,而不是将数字放入字符串的末尾,而是将字符串放在数组的索引处,如下所示:

String[] myStringArray = { "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};

或者,正如@Alnitak所提到的,只需使用一个字符串,然后使用charAt()函数:

String myString = "0123456789ABCDEF";

这样,如果剩下的是5,你得到“5”,如果是13,你得到“C”等等。

答案 1 :(得分:2)

有许多可能的解决方案。我把这包括在教学价值中,不是因为我认为它比其他答案更好。替换:

newNum = original%newBase + newNum;

int digitValue = original % newBase;
char digit = (digitValue < 10) ? ('0' + digitValue) : ('A' + (digitValue - 10));
newNum = digit + newNum;