用JAVA做进制转换之十进制转换为其他进制 - 朱岩松博客

朱岩松博客

记录
点滴生活
首页>> 学习笔记 >>用JAVA做进制转换之十进制转换为其他进制 - 朱岩松博客

阅读本文前建议先阅读:进制转换的概念及方法

题目解析:

十进制转换为其他进制即用十进制数字模要转的进制数,取余数,用商继续模直到模不尽为止,最后倒序输出。

因此,如果用程序来实现,我们可以通过定义两个变量:商和余数,用循环来控制商不断模,并且将每一位的余数拼接成字符串最后倒序输出即可!


代码实现

package 练习题;

import java.util.Scanner;

public class 进制转换10转n {
//十进制转其它进制
	  public static String To16(int n){
	        String r="";//空字符串,定义出来用于拼接字符
	        while (n>=16){ //转十六进制就是不断模16,所以要首先确保大于或等于16!
	            int yushu=n%16;  //如果满足条件开始循环,取出余数,通过模运算
	            int shang=n/16;  //取出商
	            if(yushu>9){//特殊处理 因为16进制的10-16 是用A-F代替
	                char c=(char) ((yushu-10)+'A'); //余数减去10得到的数再加A,就可以得到多的数
	                r+=c;//直接拼接字符串 
	            }else {
	                r+=yushu; //这个是非特殊情况,直接拼接字符串按道理 转8转2都不需要特殊情况处理 
	            }
	            n=shang; //循环结束时一定要将n值变成现在的商用于下一次计算,否则会无限循环!
	        }
	        if(n>9){  //循环结束后,如果商还是大与9也要做特殊处理!
	            char c=(char)((n-10)+'A'); //同上
	            r+=c; //拼接
	        }else {
	            r+=n;  //拼接
	        }
	        return reverse(r);  //倒序输出才能得到
	    }
	  
	  public static String To8(int n){
	        String r="";
	        while (n>=8){
	            int yushu=n%8;
	            int shang=n/8;
	           
	                r+=yushu;
	            
	            n=shang;
	        }
	       
	            r+=n;
	        
	        return reverse(r);
	    }
	  
	  public static String To2(int n){
	        String r="";
	        while (n>=2){
	            int yushu=n%2;
	            int shang=n/2;
	            
	                r+=yushu;
	            
	            n=shang;
	        }
	       
	            r+=n;
	        
	        return reverse(r);
	    }
	  
	
	  
	//反转字符串(反转后就是正确顺序的十六进制数:从下到上的顺序)
	    private static String reverse(String r) {
	        String s="";
	        for(int i=r.length()-1;i>=0;i--){
	            s+=r.charAt(i);
	        }
	        return s;
	    }

	    public static void main(String[] args) {
	        System.out.println(To16(1020));
	        System.out.println(To8(1020));
	        System.out.println(To2(1020));
	    }


}

输出结果为:


QQ截图20220427170301.png 完美解决!

PS:只写了十转十六进制的注释,其他两种相差无几~


×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在


版权所有,转载注意明处:朱岩松博客 » 用JAVA做进制转换之十进制转换为其他进制
标签: 进制转换 学习心得

发表评论

路人甲
未显示?请点击刷新

网友评论(0)