当前位置:首页 > 开发 > 编程语言 > Java > 正文

Java写复杂的进制转换器

发表于: 2014-08-14   作者:yu120   来源:转载   浏览:
摘要: import java.util.Scanner; public class SystemConvert { static Scanner scanner = new Scanner(System.in); static String s = ""; // 定义10进制转2进制的方法。 public static
 
import java.util.Scanner;
 
public class SystemConvert {
 
    static Scanner scanner = new Scanner(System.in);
    static String s = "";
 
    // 定义10进制转2进制的方法。
    public static String C10T2(int numb) {
        String result = "";
        for (int i = numb; i > 0; i /= 2)
            result = i % 2 + result;
        return result;
    }
 
    // 定义10进制转8进制的方法。
    public static String C10T8(int numb) {
        String result = "";
        for (int i = numb; i > 0; i /= 8)
            result = i % 8 + result;
        return result;
    }
 
    // 定义2进制转10进制的方法。
    public static int C2T10(int numb) {
        int k = 0, result = 0;
        // String result=null;
        for (int i = numb; i > 0; i /= 10) {
            result += (i % 10) * Math.pow(2, k);
            k++;
        }
        return result;
    }
 
    // 定义8进制转10进制的方法。
    public static int C8T10(int numb) {
        int k = 0, temp = 0;
        for (int i = numb; i > 0; i /= 10) {
            temp += (i % 10) * Math.pow(8, k);
            k++;
        }
        return temp;
    }
 
    public static void convert10(int numb, int to) {
        String s = "";
        switch (to) {
        case 2:
            s = "" + C10T2(numb);
            break;
        case 8:
            s = "" + C10T8(numb);
            break;
        case 16:
            s = Integer.toHexString(numb).toUpperCase();
            break;
        default:
            System.out.println("wrong input!");
        }
        System.out.println(s);
    }
 
    public static void convert2(int numb, int to) {
        String s = "";
        switch (to) {
        case 10:
            s = "" + C2T10(numb);
            break;
        case 8:
            s = "" + C10T8(C2T10(numb));
            break;
        case 16:
            s = Integer.toHexString(C2T10(numb)).toUpperCase();
            break;
        default:
            System.out.println("wrong input!");
        }
        System.out.println(s);
 
    }
 
    public static void convert8(int numb, int to) {
        String s = "";
        switch (to) {
        case 2:
            s = "" + C10T2(C8T10(numb));
            break;
        case 10:
            s = "" + C8T10(numb);
            break;
        case 16:
            s = Integer.toHexString(C8T10(numb)).toUpperCase();
            break;
        default:
            System.out.println("wrong input!");
        }
        System.out.println(s);
 
    }
 
    public static void convert16(String numb, int to) {
        String s = "";
        switch (to) {
        case 2:
            int temp2 = Integer.parseInt(numb, 16);
            s = C10T2(temp2);
            break;
        case 8:
            int temp3 = Integer.parseInt(numb, 16);
            s = C10T8(temp3);
            break;
        case 10:
            int temp = Integer.parseInt(numb, 16);
            s = "" + temp;
            break;
        default:
            System.out.println("wrong input!");
        }
        System.out.println(s);
 
    }
 
    public static void convert(int numb, int from, int to) {
 
        switch (from) {
        case 10:
            convert10(numb, to);
            break;
        case 2:
            convert2(numb, to);
            break;
        case 8:
            convert8(numb, to);
            break;
        default:
            System.out.println("wrong input!");
 
        }
    }
 
    public static void convert(String numb, int from, int to) {
 
        switch (from) {
        case 16:
            convert16(numb, to);
            break;
        default:
            System.out.println("wrong input!");
 
        }
    }
 
    public static void main(String[] args) {
 
        System.out.println("要转的是16进制数吗?\n输入1。代表是;\n输入2.代表不是.\n");
        int input = scanner.nextInt();
        switch (input) {
        case 1:
            System.out.println("请输入一个16进制数:");
            String numb = scanner.next();
            System.out.println("转成什么进制的数?");
            int to = scanner.nextInt();
            convert(numb, 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!");
        }
 
    }
 
}

 

import java.util.Scanner;
 
public class SystemConvert {
 
    static Scanner scanner = new Scanner(System.in);
    static String s = "";
 
    public static void convert() {
 
        System.out.println("please input a number:");
        String numb = scanner.next();
 
        System.out.println("choose a way:\n输入1,表示10进制转2进制;\n"
                + "输入2,表示2进制转10进制;\n" + "输入3,表示10进制转8进制;\n"
                + "输入4,表示8进制转10进制;\n" + "输入5,表示10进制转16进制;\n"
                + "输入6,表示16进制转10进制;\n" + "输入7,表示2进制转8进制;\n"
                + "输入8,表示2进制转16进制;\n" + "输入9,表示8进制转2进制;\n"
                + "输入10,表示8进制转16进制;\n" + "输入11,表示16进制转2进制;\n"
                + "输入12,表示16进制转8进制;\n");
        int input = scanner.nextInt();
 
        switch (input) {
        case 1: // 10>>>2
            s = "" + C10T2(numb);
            break;
        case 2: // 2>>>10
            s += C2T10(numb);
            break;
        case 3: // 10>>>8
            s = "" + C10T8(numb);
            break;
        case 4: // 8>>>10
            s = "" + C8T10(numb);
            break;
        case 5: // 10>>>16
            s = Integer.toHexString(Integer.valueOf(numb)).toUpperCase();
            break;
        case 6:// 16>>>10
            int temp = Integer.parseInt(numb, 16);
            s = "" + temp;
            break;
        case 7: // 2>>>8
            s = "" + C10T8(Integer.toString(C2T10(numb)));
            break;
 
        case 8: // 2>>>16
            s = Integer.toHexString(Integer.valueOf(C2T10(numb))).toUpperCase();
            break;
 
        case 9: // 8>>>2
            s = "" + C10T2(Integer.toString(C8T10(numb)));
            break;
 
        case 10:// 8>>>16
            s = Integer.toHexString(Integer.valueOf(C8T10(numb))).toUpperCase();
            break;
        case 11:// 16>>>2
            int temp2 = Integer.parseInt(numb, 16);
            s = Integer.toBinaryString(temp2);
            break;
        case 12:// 16>>>8
            int temp3 = Integer.parseInt(numb, 16);
            s = C10T8(Integer.toString(temp3));
            break;
        default:
            System.out.println("Wrong input!");
        }
        System.out.println(s);
    }
 
    public static int C2T10(String numb) {
        int k = 0, result = 0;
        // String result=null;
        for (int i = Integer.valueOf(numb); i > 0; i /= 10) {
            result += (i % 10) * Math.pow(2, k);
            k++;
        }
        return result;
    }
 
    public static int C8T10(String numb) {
        int k = 0, temp = 0;
        for (int i = Integer.valueOf(numb); i > 0; i /= 10) {
            temp += (i % 10) * Math.pow(8, k);
            k++;
        }
        return temp;
    }
 
    public static String C10T8(String numb) {
        String result = "";
        for (int i = Integer.valueOf(numb); i > 0; i /= 8)
            result = i % 8 + result;
        return result;
    }
 
    public static String C10T2(String numb) {
        String result = "";
        for (int i = Integer.valueOf(numb); i > 0; i /= 2)
            result = i % 2 + result;
        return result;
    }
 
    public static void main(String[] args) {
 
        SystemConvert.convert();
    }
 
}

 

Java写复杂的进制转换器

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
刚回来老哥就送了我个LT26ii,第一次用android的,看上去还不错,告别3年的“大哥大”N97啦~(先谢
class ArrayTest3 { public static void main(String[] args) { toBin(6); toBa(60); toHex(60); }
创建复杂的用户界面 Swing包含400多个不同的类,在这使其成为Java中最大的类库。其中的很多类可用之
4 进制
一、对于整数:java有三种表现形式:但是在计算机中都是以二进制表示的(八进制,十六进制是为了方
作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算。这一讲,泥瓦匠带你走
Java 字符串 进制转换 工具 源码 刚写了小工具,丢到blog来充数,很小的jar,加上源码才12KB…… 没
Java 字符串 进制转换 工具 源码 刚写了小工具,丢到blog来充数,很小的jar,加上源码才12KB…… 没
Java 字符串 进制转换 工具 源码 刚写了小工具,丢到blog来充数,很小的jar,加上源码才12KB…… 没
Java 字符串 进制转换 工具 源码 刚写了小工具,丢到blog来充数,很小的jar,加上源码才12KB…… 没
先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号