Java~十进制转二进制和十六进制的多种方法(含完整代码和注解)

2023-10-31

一.直接使用Java里面Integer类的方法

  • Integer.toBinaryString(data)    //data为十进制,转换成二进制

  • Integer.toHexString(data)        //data为十进制,抓换成十六进制

        System.out.println(Integer.toBinaryString(100));  // 将100转换成二进制输出
        System.out.println(Integer.toHexString(100));     // 将100转换成十六进制输出

哈哈,其实有现成工具,不用白不用,对吧。

但是也可以自己尝试着实现一下,并不是很难的,如下第二种方法

二.常规的取余法

    就和大家用手算把十进制转换成二进制和十六进制的方法原理一样,这里相当于是用java模拟了一遍。

    1.将十进制转换为 二进制

  这里我使用了ArrayList集合来存放余数,因为取余法要逆序输出,用ArrayList可以方便的使用Collections类的reverse方法将数组逆置,然后用for each顺序输出。当然也可以使用普通的数组,输出的时候注意一下要逆序输出就行。

public static void main(String[] args) {
    //输入10进制,输出它的二进制和十六进制
    Scanner sc = new Scanner(System.in);
    int data = sc.nextInt();    //输入10进制数
    {
        int d = data;
        ArrayList a = new ArrayList();
        while(d != 0)    //用除2取余法
        {
            a.add(d%2);
            d=d/2;
        }
        Collections.reverse(a);    //将数组逆置
        System.out.print(data+"的二进制为");
        for (Object o : a) {   //for each循环
            System.out.print(o);
        }
        System.out.println("");
        a.clear();
    }
}

    2.将十进制转换为十六进制

十六进制和二进制原理类似,唯一要注意的就是当余数超过10的时候,要用对应的字母来表示,这里我定义了一个char类型的temp数组实现数字和字母之间的转换。

还有就是十六进制情况下的字母大小写的问题,可能大多数人,包括老师教的时候都是大写(比如6A),其实小写字母也是一样的,我这里用的是小写字母(比如6a)。

public static void main(String[] args) {
    //输入10进制,输出它的二进制和十六进制
    Scanner sc = new Scanner(System.in);
    int data = sc.nextInt();    //输入10进制数
    {
        int d = data;
        ArrayList a = new ArrayList();
        while(d != 0)
        {
            if(d%16 < 10)
                a.add(d%16);
            else    //如果余数大于10,将其转换成字母
            {
                char[] temp = new char[]{'a', 'b', 'c', 'd', 'e', 'f'};
                a.add(temp[d%16-10]);
            }
            d=d/16;
        }
        Collections.reverse(a);  //将数组逆置
        System.out.print(data+"的十六进制为");
        for (Object o : a) {
            System.out.println(o);
        }
        System.out.println("");
        a.clear();
    }
}

运行结果: 


欢迎大家评论指正,一起交流学习◕‿◕

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java~十进制转二进制和十六进制的多种方法(含完整代码和注解) 的相关文章

  • 如何编写 Hibernate HQL 查询来删除所有“孙子”元素?

    我有学校 里面有团体 里面有学生 我想删除特定学校的所有学生 在 SQL 中我可以编写以下查询 DELETE FROM students1 WHERE students1 group id IN SELECT id FROM group1
  • Java-线程与CPU的关系

    我对多线程还很陌生 我正在开发一个项目 尝试在我的 Java 程序中使用 4 个 CPU 我想做类似的事情 int numProcessors Runtime getRuntime availableProcessors ExecutorS
  • 如何让Spring RabbitMQ创建一个新的队列?

    根据我对rabbit mq的 有限 经验 如果您为尚不存在的队列创建新的侦听器 则会自动创建该队列 我正在尝试将 Spring AMQP 项目与rabbit mq 一起使用来设置侦听器 但出现错误 这是我的 xml 配置
  • 如何迭代所有注册表项?

    我正在尝试迭代所有注册表项以查找 包含 并删除 jre1 5 0 14 值 有办法做到吗 下面的代码只是在特定键下找到jre1 5 0 14 我确实想迭代所有的键 顺便说一句 if 子句获取是否等于 jre1 5 0 14 但如果它包含 j
  • 实现与扩展:何时使用?有什么不同?

    请用易于理解的语言进行解释或提供某些文章的链接 extends is for 延伸一类 implements is for 实施一个接口 接口和常规类之间的区别在于 在接口中您不能实现任何声明的方法 只有 实现 接口的类才能实现方法 C 中
  • @OneToMany 与 @JoinTable 错误

    我试图理解 OneToMany with JoinTable 对于这样的场景 我正在使用 JPA 2 1 Hibernate 5 0 4 和 Oracle 11 XE 当我打电话时userDao save user 下面的代码 我有 jav
  • 如何识别 Java 中的不可变对象

    在我的代码中 我正在创建一个对象集合 这些对象将由各种线程以只有在对象不可变的情况下才安全的方式访问 当尝试将新对象插入到我的集合中时 我想测试它是否是不可变的 如果不是 我将抛出异常 我能做的一件事是检查一些众所周知的不可变类型 priv
  • RSA SignatureException:签名长度不正确

    我在签署 rsa 签名时遇到问题 我有一个用私钥加密的签名 然而 当我尝试使用公钥验证它时遇到问题 我得到以下异常 java security SignatureException Signature length not correct
  • 初级 Java 计数器代码

    我的教授希望我这样做 使用下面的 Counter 接口写入多个可互换计数器 public interface Counter Current value of this counter int value Increment this co
  • 如何在 Struts 2 OGNL 中将参数传递给方法调用

    我想使用属性作为对象方法的参数
  • 如何将自定义日志处理程序添加到 Google App Engine?

    我正在尝试向我的 java 应用程序添加自定义日志处理程序 我已经实现了一个扩展 java util Logging Handler 类的 InnerLogger 类 在我的logging properties中声明为处理程序 handle
  • 尝试在java中的Arraylist中查找对象的所有出现

    我有一个 Java ArrayList 我需要查找其中出现的所有特定对象 ArrayList indexOf Object 方法只找到一次出现 所以看来我还需要其他东西 我认为你不需要太花哨 以下应该可以正常工作 static
  • 以编程方式设置 Logback Appender 路径

    我正在尝试以编程方式设置 Logback 附加程序路径 滚动文件附加器 http logback qos ch apidocs ch qos logback core rolling RollingFileAppender html准确地说
  • SimpleDateFormat 将 lenient 设置为 false 时出现异常

    为什么这段代码会抛出无法解析日期的异常 SimpleDateFormat f new SimpleDateFormat yyyy MM dd T HH mm ss 000Z f setLenient false String dateStr
  • Java ConcurrentModificationException [重复]

    这个问题在这里已经有答案了 当删除倒数第二个元素时 没有 ConcurrentModificationException List
  • 是否可以为 azure blob 存储中的给定目录生成具有写入权限的 SAS(共享访问签名)

    我们的 blob 存储帐户结构 容器名称 simple 在这个容器内我们有 blob aa one zip aa two zip bb ss zip bb dd zip 是否可以生成对aa 目录 有写权限 但对bb 目录 没有访问权限的SA
  • H2 - (相当)长的 INSERT 失败,错误 42000

    H2 内存中 插入 错误 42000 尝试过版本 1 4 196 1 4 197 1 4 199 我还尝试在 H2 服务器 本地 上执行 INSERT 也失败 给出错误的行 抱歉 但出于安全原因 我无法生成更多 INSERT INTO tb
  • 编写自定义 Eclipse 调试器

    EDIT 一定有某种方法可以解决这个问题 而无需编写全新的调试器 我目前正在研究在现有 java 调试器之上构建的方法 如果有人对如何获取 Java 调试器已有的信息 有关堆栈帧 变量 原始数据等 有任何想法 那将非常有帮助 我想要做的是我
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • 我找不到 IntelliJ 快捷方式

    我使用 vim 一段时间 我知道有一个 intellij vim 插件 我很好奇内置的 IntelliJ 文本导航存在什么 如何打开实时模板来创建模板 如何查看以 tr 开头的现有模板列表 如何进行全局搜索并在当前文档中进行搜索 然后转到下

随机推荐