`
yu120
  • 浏览: 81656 次
社区版块
存档分类
最新评论

Java写复杂的进制转换器

阅读更多
 
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编写的进制转换器(带图形界面)

    一个用java写的进制转换器,有图形界面。 主要是调用java的lang类进行转换。

    进制转换器(java)

    本项目名为"进制转换器(java)",它是一个小巧的工具,专门用于进行2、8、10和16进制之间的转换,特别是针对整数类型。以下将详细讲解进制转换的基本原理以及在Java中如何实现这些转换。 首先,我们来看二进制...

    四种进制转换

    本代码用JAVA语言编写,实现了十进制,二进制,十六进制和八进制的转换

    Java实现复杂的进制转换器功能示例

    在给定的文件内容中,我们看到了一个Java程序的示例代码,这个程序提供了一种实现复杂进制转换器功能的方法。程序中包含了从10进制到2进制、8进制、16进制的转换,以及这些进制之间的相互转换。通过封装成不同的函数...

    Java进制转换器窗体设计(一)

    本程展示如何使用Java中Swing程序来设计进制转换器,实现十进制到二进制,八进制,十六进制的转换。

    java进制转换器

    设计一个java程序。输入一个十进制数转,将其换成二进制、八进制和十六进制。

    进制转换器(原创首发)

    本进制转换器用于二进制、八进制、十进制、十六进制之间的整数数值转换。  与常规的转换器不同的是,这个转换器支持一次转换一个或批量转换一组数字,每个数字只需要以TAB、回车、空格、逗号或分号(全半角均可)...

    4种常用进制转换器

    这里我们主要探讨的是"4种常用进制转换器",它是一款便捷的工具,帮助用户轻松实现不同数值系统之间的转换。V5.0.0.3版本因其高效、实时的转换特性受到了用户的高度评价。 首先,我们要了解最基本的四种进制:二...

    进制转换器源码

    在这个"进制转换器源码"中,我们可以看到一个程序,它能够处理从二进制(Binary)到三十六进制(Hexavigesimal)之间的数字转换。下面我们将深入探讨这个主题,包括进制转换的基本原理、常见进制及其用途,以及可能...

    java 任意进制转换(源码)

    在Java编程语言中,进制转换是一项基础但重要的技能,特别是在处理数字表示和数据解析时。本程序提供了一个Java桌面小应用程序,它允许用户进行任意进制之间的转换,包括从字符和字符串转换到其他进制数。下面我们将...

    Java万能进制转换器.pdf

    标题《Java万能进制转换器.pdf》及描述表明这是一份介绍如何使用Java语言构建一个可以进行万能进制转换的工具的文档。文档中提到了关键的类和方法,以及在GUI(图形用户界面)设计中涉及的技术细节。在Java的图形...

    进制转换器

    进制转换器是一种工具,用于在不同的数值进制之间进行转换。在计算机科学和信息技术领域,进制转换是一项基础但至关重要的技能。了解并能够熟练使用各种进制,如二进制、八进制、十进制和十六进制,对于理解和处理...

    自己制作进制转换器

    综上所述,这个程序使用Java和Android SDK编写,实现了基本的数值进制转换功能,通过用户界面交互,提供便捷的十进制到二、八、十六进制的转换服务,并通过不同的颜色标识转换结果。这个项目对于初学者来说是一个很...

    java_十进制数转换为二进制,八进制,十六进制数的算法

    `chang`函数则专门用于处理十六进制转换中余数为10到15的情况。 ### 示例代码 虽然提供的代码片段包含了一些非Java语法(如C#特有的命名空间和类定义),但核心转换逻辑清晰可见。例如,在`DtoB`函数中,通过循环...

    进制转换器,2进制十进制八进制十六进制之间任意转换

    进制转换器是一种工具,它允许用户在这些不同的数制间进行转换,这对于理解和处理二进制数据尤其有用,因为计算机内部是以二进制形式存储和处理所有信息的。 二进制(Base-2)系统由两个数字0和1组成,是计算机科学...

    Java万能进制转换器.doc.doc

    【Java万能进制转换器】是一个Java编写的程序,用于实现不同进制之间的数值转换。这个程序具有用户友好的图形界面,能够方便地将数字从一种进制转换为另一种进制。以下是关于这个项目的详细解析: 1. **效果图**: ...

    使用AndroidStudio开发简易进制转换计算器

    3. Java或Kotlin编程,实现逻辑处理和进制转换算法。 4. 用户交互事件的处理,如按钮点击监听。 5. 错误处理和异常管理,确保应用的稳定性和用户体验。 6. 应用部署和测试,确保功能的正确性和性能的优化。 通过这...

    Java二,十,八,十六进制转换器

    Java基于界面的二,十,八,十六进制转换工具源代码

Global site tag (gtag.js) - Google Analytics