这里有几个类似的线程提出了像我这样的问题,但是我无法找到一个相对简单的解决方案。想知道你们是否有任何想法。
我有一些代码将采用任何十进制数字并将其转换为基数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;
}
}
答案 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;