二、八、十六进制转为十进制
//二,八,十六,进制转为十进制(字符串知识点方法) public class PracticeDemo { public static void BOHextoD(int n,String string) { int sum = 0; System.out.println("输出"+n+"进制数如下:"); for(int i = 0;i < string.length();i++) { int num = 0;//num用于记录每一位上面的数字 //1.charAt()为提取字符串的特定字符 2.强制把char类型住转化为的int类型 int m = string.charAt(i); if(n > 8)//提取十六进制各位上面的数字 { num = m >= 'A'? m-'A'+10 : m-'0';//'A' = 65 } else { num = m >= '0' ? m - '0' : null;//'1'= 49 } sum += (int) Math.pow(n, string.length()-1-i)*num; //权值乘以所在位上面的数字 } System.out.println(sum+" "); } public static void main(String[] args) { Scanner in = new Scanner (System.in); System.out.println("输入你要转的字符串"); String s = in.nextLine(); int a = 2;//a=8,a=16 a为什么数字就是几进制转换 BOHextoD(a,s); } } //二,八进制转十进制(数学知识点方法) public class PracticeDemo { public static void BOtoD(int n,String string) { int[] arr = new int[string.length()];//将字符串数组转换为一个整型数组 for(int i = 0;i < string.length();i++) { // 用for循环解析子串。 parseInt()把字符串解析并且返回一个整型 arr[i] = Integer.parseInt(string.substring(i,i+1)); } int num = 0; //用于提取各位上面的数字 int sum = 0; //查表法 :权值 int[] c = new int[20]; for(int i = 0;i < 20;i++) { c[i] = (int) Math.pow(n, i); } //转为十进制 for(int i = 0;i < arr.length;i++) { if(n > 2) //八进制转换 { for(int j = 0;j < 8;j++) { if(arr[i] == j) { num = c[arr.length-1-i]*j ;//权值乘以数字 } } sum += num ; } else { if(arr[i] == 1) { num = c[arr.length-i-1]; } else { num = 0; } sum += num ; } } System.out.println(sum+""); } public static void main(String[] args) { Scanner in = new Scanner (System.in); System.out.println("输入二进制数:"); String s = in.nextLine(); BOtoD(2,s); // System.out.println("输入八进制数:"); //String s = in.nextLine(); // BOtoD(8,s); } }