Java之任意进制转换

问题描述:

现有的Java库函数有提供进制转换的方法

被封装在Integer对象中.

10进制转化其他进制     对应的方法,参数:n(原10进制数据),r(进制),     返回值
10进制转2进制     Integer.toBinaryString(n);     一个二进制字符串.
10进制转8进制     Integer.toOctalString(n);     一个八进制字符串
10进制转16进制     Integer.toHexString(n);     一个16进制字符串
10进制转 r 进制     Integer.toString(100, 16);     一个r进制字符串
具体实现:

public class Main {
    public static void main(String[] args) {
        int n = 16;
        Integer.toHexString(n);//使用Integer对象的进制转换方法

        System.out.println(n + "的八进制是:" + Integer.toOctalString(n));
        System.out.println(n + "的二进制是:" + Integer.toBinaryString(n));
        System.out.println(n + "的十六进制是:" + Integer.toHexString(n));
        System.out.println(n + "的三进制是:" + Integer.toString(n, 3));
    }

分析:可以写一个关于Java 任意进制转换的方法

利用StringBuilde 对象可随意更改其值,利用append()方法将值附加到缓冲区,

进制转换本质就是除留取余数;

代码测试

import java.util.Scanner;
public class jinzhizhuanhuan {
          static char a[] =new char [36];
    
      pubilc  static void{    
            for(int i = 0;i<10;i++) {
                   a[i]=(char)('0'+i);
            }
            for(int i=10;i<a.length;i++) {
                a[i]=(char)('A'+(i-10));
            }
            }
      static String transRadix(String num,int fromRadix, int toRadix) {
          int number=Integer.valueOf(num, fromRadix);
          StringBuilder s=new StringBuilder();
          while(number!=0) {
              if(toRadix==0)
                 return null;
            s.append(a[number%toRadix]);
              number=number/toRadix;
          }
          return s.reverse().toString();
          
      }
        
public static void main(String[] args) {
     
    Scanner sc=new Scanner(System.in);
    String s=sc.next();
     System.out.println(transRadix(s,10,16));
    
    
    }

}

效果:23

          17h

posted @ 2019-03-13 22:32  布朗克的黑猫  阅读(4044)  评论(0编辑  收藏  举报