Java的Integer类中有一些方法可以直接处理十进制数与其他进制数的转换。自己编写方法实现任意进制数的相互转换。代码如下:
package notations;
public class MainClass
{
public static void main(String[] args)
{
System.out.println(HippoTools.baseConverter(1780, 10, 18, true));
}
}
class HippoTools
{
/**
* 任意进制数的相互转换。基本原理是先将原来的数转换为10进制数,再转换为新的进制数
* @param number 原来的数
* @param originalBase 原来的数的进制
* @param newBase 需要转换成的进制
* @param usingUppercaseLetters 是否返回字母全大写的字符串
* @return 新的进制数(String类型)或“无法转换”的警告
* @author 赵利昂
*/
public static String baseConverter(int number, int originalBase, int newBase, boolean usingUppercaseLetters)
{
try
{
String originalNumber = Integer.toString(number);
String newNumber = Integer.toString(Integer.valueOf(originalNumber, originalBase), newBase);
return usingUppercaseLetters ? newNumber.toUpperCase() : newNumber.toLowerCase();
}
catch(NumberFormatException e)
{
return "Unable to identify: " + number + " cannot be written in base-" + originalBase + " notation.";
}
}
}
主方法将会打印“58G”。