万水千山走过

导航

二、八、十六进制转为十进制

//二,八,十六,进制转为十进制(字符串知识点方法)
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);
	 }
}

  

posted on 2020-02-14 11:55  万水千山走过  阅读(479)  评论(0编辑  收藏  举报