JAvaは任意の進数間の変換を簡単に実現する

26989 ワード

異なる進数のデータ表現形式:1.バイナリ:0,1からなる;0 bで始まるか、Bで終わる.2.8進法:0、1、2、3、4、5、6、7からなり、0で始まる.3.10進数:0、1、2、3、4、5、6、7、8、9からなり、デフォルトは10進数データです.
4.16進数:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(アルファベットの大文字と小文字どちらでもよい)から0 xで始まる
JAvaコード
import java.util.Scanner;
public class E201_01_08     {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        boolean b = true;
        boolean b1 = false;
        do{
            System.out.println("*----------------     -----------------*");
            System.out.print("*A:    =>    \t\t");
            System.out.println("B:    =>      *");
            System.out.print("*C:    =>    \t\t");
            System.out.println("D:   =>       *");
            System.out.print("*E:    =>     \t");
            System.out.println("F:    =>     *");
            System.out.print("*G:    =>    \t\t");
            System.out.println("H:    =>      *");
            System.out.print("*I:    =>     \t");
            System.out.println("J:     =>    *");
            System.out.println("*K:  ");
            System.out.print("   (A-K):");
            char c = sc.next().charAt(0);
            int num;
            String sum= "";
            switch (c){
                case 'A':
                    System.out.print("          :");
                    num = sc.nextInt();
                    for(int i = tenToTwo(num).length()-1;i>=0;i--){
                        sum+=tenToTwo(num).substring(i,i+1);
                    }
                    System.out.println(num+"(10)→"+sum+"(2)");
                    break;

                case 'B':
                    System.out.print("          :");
                    String twoten = sc.next();
                    System.out.println(twoten+"(2)→"+twoToTen(twoten)+"(10)");
                    break;

                case 'C':
                    System.out.print("          :");
                    int teneight = sc.nextInt();
                    for(int i = tenEight(teneight).length()-1;i>=0;i--){
                        sum+=tenEight(teneight).substring(i,i+1);
                    }
                    System.out.println(teneight+"(10)→"+sum+"(8)");
                    break;

                case 'D':
                    System.out.print("          :");
                    String eightten = sc.next();
                    System.out.println(eightten+"(8)→"+eightTen(eightten)+"(10)");
                    break;

                case 'E':
                    System.out.print("          :");
                    int ten = sc.nextInt();
                    for(int i = Ten(ten).length()-1;i>=0;i--){
                        sum+=Ten(ten).substring(i,i+1);
                    }
                    System.out.println(ten+"(10)→"+sum+"(16)");
                    break;

                case 'F':
                    System.out.print("           :");
                    String sixteen = sc.next();
                    System.out.println(sixteen+"(16)→"+sixTeen(sixteen)+"(10)");
                    break;

                case 'G':
                    System.out.print("        :");
                    String two1 = sc.next();
                    int num1 =twoToTen(two1);//       
                    for(int i = tenEight(num1).length()-1;i>=0;i--){
                        sum+=tenEight(num1).substring(i,i+1);
                    }
                    System.out.println(two1+"(2)→"+sum+"(8)");
                    break;

                case 'H':
                    System.out.print("          :");
                    String eight = sc.next();
                    int eight1 =eightTen(eight);
                    for(int i = tenToTwo(eight1).length()-1;i>=0;i--){
                        sum+=tenToTwo(eight1).substring(i,i+1);
                    }
                    System.out.println(eight+"(8)→"+sum+"(2)");
                    break;

                case 'I':
                    System.out.print("          :");
                    String two = sc.next();
                    int two2 =twoToTen(two);
                    for(int i = Ten(two2).length()-1;i>=0;i--){
                        sum+=Ten(two2).substring(i,i+1);
                    }
                    System.out.println(two+"(2)→"+sum+"(16)");
                    break;

                case 'J':
                    System.out.print("         :");
                    String sixtwo = sc.next();
                    int tensix = sixTeen(sixtwo);
                    for(int i = tenToTwo(tensix).length()-1;i>=0;i--){
                        sum+=tenToTwo(tensix).substring(i,i+1);
                    }
                    System.out.println(sixtwo+"(16)→"+sum+"(2)");
                    break;

                case 'K':
                    do {
                        System.out.print("    (Y/N):");
                        char out = sc.next().charAt(0);
                        switch (out) {
                            case 'Y':
                                b = false;
                                b1=false;
                                break;
                            case 'N':
                                b1=false;
                                break;
                                default:
                                    b1=true;
                                    System.out.println("**********      !     *************");
                        }
                    }while(b1);
                    break;
                    default:
                        System.out.println("************    !     *************");
            }
        }while(b);
    }

    //A.   >   
    private static String tenToTwo(int num){
            String s = "";
            while(num>=2) {
                if (num % 2 == 0){
                    s=s+"0";
                }else{
                    s=s+"1";
                }
                num=num/2;
                if(num<2){
                    s+="1";
                }
            }
            return s;
    }
    //B.   >   
    private static int twoToTen(String num){
        int sum = 0;
        for(int i = 0;iint)Integer.parseInt(num.substring(i,i+1))*Math.pow(2,num.length()-1-i);
        }
        return sum;
    }

    //C.         
    private static String tenEight(int teneight){
        String s = "";
        while(teneight>=8) {
            for(int i =0;i<8;i++){
                if(teneight%8==i){
                    s+=Integer.toString(i);
                    break;
                }
            }
            teneight=teneight/8;
            if(teneight<8){
                s+=Integer.toString(teneight);
            }
        }
        return s;
    }
    //D.         
    private static int eightTen(String num){
        int sum = 0;
        for(int i = 0;iint)Integer.parseInt(num.substring(i,i+1))*Math.pow(8,num.length()-1-i);
        }
        return sum;
    }
    //E.          
    private static String Ten(int num){
        String s = "";
        String arr[] = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
        if(num<16){
            s=arr[num%16];
        }
        while(num>=16) {
            for(int i =0;i<16;i++){
                if(num%16==i){
                    s+=arr[i];
                    break;
                }
            }
            num=num/16;
            if(num<16){
                s+=arr[num%16];
            }
        }

        return s;
    }

    //F          
    private static int sixTeen(String num){
        int sum = 0;
        for(int i = 0;i1);
            if(ch.equals("a")){
                ch="10";
            }else if(ch.equals("b")){
                ch="11";
            }else if(ch.equals("c")){
                ch="12";
            }else if(ch.equals("d")){
                ch="13";
            }else if(ch.equals("e")){
                ch="14";
            }else if(ch.equals("f")){
                ch="15";
            }
            sum+=(int)Integer.parseInt(ch)*Math.pow(16,num.length()-1-i);
        }
        return sum;
    }
}