二十进制数值以内互相转换
package scaleTransform; import java.util.*; /** * @author tangxianmeng * */ public class Scale { /** * @param args */ private static int oneToTen(int start, String str2) { char[] str = str2.toCharArray(); int sum = 0; int j = 1; int b = 0; for (int i : str) { if (i >= 'a' && i <= 'j') { b = i - 'a' + 10; } if (i >= 'A' && i <= 'J') { b = i - 'A' + 10; } if (i >= '0' && i <= '9') { b = i - '0'; } sum += (b) * Math.pow(start, (str.length - j)); j++; } return sum; } private static String tenToOne(int str, int end) { int i = 0; char[] last = new char[20]; char[] exp = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' }; while (str != 0) { last[i++] = exp[str % end]; str /= end; } char[] last1 = new char[i]; for (int j = 0; j < i; j++) { last1[j] = last[j]; } String kString = String.valueOf(last1); StringBuffer stringBuffer = new StringBuffer(kString); stringBuffer = stringBuffer.reverse(); kString = stringBuffer.toString(); return kString; } public static void transform(String str, int start, int end) { // TODO Auto-generated method stub int mid; mid = oneToTen(start, str); System.out.println(tenToOne(mid, end)); } @SuppressWarnings("resource") public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); System.out.println("输入即将转换的数:"); String str = in.nextLine(); System.out.println("输入原进制:"); int start = in.nextInt(); System.out.println("输入目标进制:"); int end = in.nextInt(); System.out.println("转换结果为:"); transform(str, start, end); } }
二十进制数值以内互相转换。
以下是转换示例:
思路很简单,都是先将原来的进制转为十进制,用十进制作为桥梁,再将十进制转为目标进制。