16进制以下的进制转换
对逐个数进行处理~~
package Chapter02;import java.util.Scanner;public class TextZhuanhuan { //定义一个进制转换的类public static int ZhuanToTen(int a, String str) { //其它进制转换为十进制double d = 0; //声明转换后的数值String subString; //根据字符串的长度循环获得单个元素for(int i=0; i<str.length();i++) {subString = str.substring(i, i+1);if(a == 16){subString = sixteenToNumber(subString);}d += Integer.parseInt(subString) * Math.pow(a, str.length()-i-1);}return (int)d;}public static String TenToNumber(int a, String str) {int current = Integer.parseInt(str);String opResult = "";if(a == 16){while(current >= a){opResult += sixteenNumberToChar(current % a);current /= a;}if(current != 0)opResult += sixteenNumberToChar(current);}else{while(current >= a) {opResult += sixteenNumberToChar(current % a);current /= a;}if(current != 0)opResult += current;}String riResult = "";for(int i = opResult.length()-1;i>=0;i--){riResult = riResult + opResult.substring(i, i+1);}return riResult;}public static String sixteenToNumber(String s) {String num = "";if(s.equals("A") || s.equals("a"))num = "10";else if(s.equals("B") || s.equals("b"))num = "11";else if(s.equals("C") || s.equals("c"))num = "12";else if(s.equals("D") || s.equals("d"))num = "13";else if(s.equals("E") || s.equals("e"))num = "14";else if(s.equals("F") || s.equals("f"))num = "15";else num = s;return num;}public static String sixteenNumberToChar(int num) {String c="";if(num == 10)c = "A";else if(num == 11)c = "B";else if(num == 12)c = "C";else if(num == 13)c = "D";else if(num == 14)c = "E";else if(num == 15)c = "F";else c = String.valueOf(num);return c;}public static void main(String[] args) {String number; // 要转换的数int a, b;// a表示转换前的进制,b表示转换后的进制String result = "";// 经过数制转换后的结果String stop = "";Scanner read = new Scanner(System.in);//得到用户输入的值do{System.out.println("输入三个整数:待转换的数据 要转换之前的进制 要转换后的进制");number = read.next();a = read.nextInt();b = read.nextInt();stop = "Quit";}while(stop != "Quit");try{if(a != 10){String temp = String.valueOf(ZhuanToTen(a, number)); // 转换成十进制的数result = String.valueOf(TenToNumber(b, temp)); // 十进制转换成其它进制} else {result = String.valueOf(TenToNumber(b, number)); // 十进制转换成其它进制}System.out.println(a + "进制的数:" + number + ",转换成" + b + "进制的数为:"+ result);} catch (Exception e) {System.out.print("转换失败,请正确输入!");System.exit(-1);}}}1