进制转换

总结了下各进制间的相互转换

import java.util.Scanner;

/**
 * 进制转换
 */
public class RadixConvert {

    static Scanner scanner = new Scanner(System.in);
    static String s = "";

    // 十进制转换成二进制
    public static String Ten2Bin(int num) {
        String result = "";
        for (int i = num; i > 0; i /= 2) {
            result = i % 2 + result;
        }
        return result;
    }

    // 十进制转换成八进制
    public static String Ten2Octal(int num) {
        String result = "";
        for (int i = num; i > 0; i /= 8) {
            result = i % 8 + result;
        }
        return result;
    }

    // 二进制转换成十进制
    public static int Bin2Ten(int num) {
        int k = 0, result = 0;
        for (int i = num; i > 0; i /= 10) {
            result += (i % 10) * Math.pow(2, k);
            k++;
        }
        return result;
    }

    // 八进制转换成十进制
    public static int Octal2Ten(int num) {
        int k = 0, temp = 0;
        for (int i = num; i > 0; i /= 10) {
            temp += (i % 10) * Math.pow(8, k);
            k++;
        }
        return temp;
    }

    // 十进制转换成其他进制
    public static void TenConvert(int num, int to) {
        String s = "";
        switch (to) {
        case 2:
            s = "" + Ten2Bin(num);
            break;

        case 8:
            s = "" + Ten2Octal(num);
            break;

        case 16:
            s = Integer.toHexString(num).toUpperCase();
            break;
        default:
            System.out.println("wrong input!");
        }
        System.out.println(s);
    }

    // 二进制转换成其他进制
    public static void BinConvert(int num, int to) {
        String s = "";
        switch (to) {
        case 10:
            s = "" + Bin2Ten(num);
            break;
        case 8:
            s = "" + Ten2Octal(Bin2Ten(num));
            break;
        case 16:
            s = Integer.toHexString(Bin2Ten(num)).toUpperCase();
            break;
        default:
            System.out.println("wrong input!");
        }
        System.out.println(s);
    }

    // 八进制转换成其他进制
    public static void OctalConvert(int num, int to) {
        String s = "";
        switch (to) {
        case 2:
            s = "" + Ten2Bin(Octal2Ten(num));
            break;
        case 10:
            s = "" + Octal2Ten(num);
            break;
        case 16:
            s = Integer.toHexString(Octal2Ten(num)).toUpperCase();
            break;
        default:
            System.out.println("wrong input!");
        }
        System.out.println(s);
    }

    // 十六进制转换成其他进制
    public static void HexConvert(String num, int to) {
        String s = "";
        switch (to) {
        case 2:
            int temp2 = Integer.parseInt(num, 16);
            s = Ten2Bin(temp2);
            break;
        case 8:
            int temp3 = Integer.parseInt(num, 16);
            s = Ten2Octal(temp3);
            break;
        case 10:
            int temp = Integer.parseInt(num, 16);
            s = "" + temp;
            break;
        default:
            System.out.println("wrong input!");
        }
        System.out.println(s);
    }

    public static void convert(int num, int from, int to) {
        switch (from) {
        case 10:
            TenConvert(num, to);
            break;
        case 2:
            BinConvert(num, to);
            break;
        case 8:
            OctalConvert(num, to);
            break;
        default:
            System.out.println("wrong input!");
        }
    }

    public static void convert(String num, int from, int to) {
        switch (from) {
        case 16:
            HexConvert(num, to);
            break;
        default:
            System.out.println("wrong input!");

        }
    }


    public static void main(String[] args) {
        //System.out.println(RadixConvert.Ten2Bin(9));
        System.out.println("要转的是16进制数吗?\n输入1.代表是  \n输入2.代表否\n");
        int input = scanner.nextInt();
        switch(input){
        case 1:
            System.out.println("请输入一个16进制数:");
            String num = scanner.next();
            System.out.println("转成什么进制的数?");
            int to = scanner.nextInt();
            convert(num,16,to);
            break;
         case 2:
            System.out.println("请输入一个数:");
            int numb2 = scanner.nextInt();
            System.out.println("从什么进制数转起?");
            int from = scanner.nextInt();
            System.out.println("转成什么进制的数?");
            int to2 = scanner.nextInt();
            convert(numb2, from, to2);
            break;
         default:
            System.out.println("wrong input!");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值