Java中的十进制到十六进制转换器

我有一个家庭作业,我需要在十进制,二进制和十六进制之间进行三向转换。我需要帮助的功能是将十进制转换为十六进制。我几乎不了解十六进制,但是如何将十进制转换为十六进制。我需要一个接受int dec并返回String hex的函数。不幸的是,我没有这个函数的任何草稿,我完全迷失了。

我有一个家庭作业,我需要在十进制,二进制和十六进制之间进行三向转换。我需要帮助的功能是将十进制转换为十六进制。我几乎不了解十六进制,但是如何将十进制转换为十六进制。我需要一个接受int dec并返回String hex的函数。不幸的是,我没有这个函数的任何草稿,我完全迷失了。

  public static String decToHex(int dec)
  {
    String hex = "";
    return hex;
  }

此外,我不能使用这些预制函数,如 Integer.toHexString()或任何东西,我需要实际制作算法,否则我不会学到任何东西。

37

一种可能的解决方案:

import java.lang.StringBuilder;
class Test {
  private static final int sizeOfIntInHalfBytes = 8;
  private static final int numberOfBitsInAHalfByte = 4;
  private static final int halfByte = 0x0F;
  private static final char[] hexDigits = { 
    '0', '1', '2', '3', '4', '5', '6', '7', 
    '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
  };
  public static String decToHex(int dec) {
    StringBuilder hexBuilder = new StringBuilder(sizeOfIntInHalfBytes);
    hexBuilder.setLength(sizeOfIntInHalfBytes);
    for (int i = sizeOfIntInHalfBytes - 1; i >= 0; --i)
    {
      int j = dec & halfByte;
      hexBuilder.setCharAt(i, hexDigits[j]);
      dec >>= numberOfBitsInAHalfByte;
    }
    return hexBuilder.toString(); 
  }
  public static void main(String[] args) {
     int dec = 305445566;
     String hex = decToHex(dec);
     System.out.println(hex);       
  }
}

输出:

1234BABE

无论如何,有一个库方法:

String hex = Integer.toHexString(dec);
27

简单:

  public static String decToHex(int dec)
  {
        return Integer.toHexString(dec);
  }

如上所述:Java Convert integer to hex integer

13

我需要一个函数,它接受一个 int dec 并返回一个字符串十六进制。

我从http://introcs.cs.princeton.edu/java/31datatype/Hex2Decimal.java.html中找到了一个更优雅的解决方案,我从原来的(请参阅编辑)

// precondition:  d is a nonnegative integer
public static String decimal2hex(int d) {
    String digits = "0123456789ABCDEF";
    if (d <= 0) return "0";
    int base = 16;   // flexible to change in any base under 16
    String hex = "";
    while (d > 0) {
        int digit = d % base;              // rightmost digit
        hex = digits.charAt(digit) + hex;  // string concatenation
        d = d / base;
    }
    return hex;
}

免责声明:我在我的编码面试中提出这个问题,我希望这个解决方案不会太受欢迎:)

2016 年 6 月 17 日编辑:我添加了base变量,以灵活地转换为任何基数:二进制,八进制,7 的基数...
根据评论,此解决方案是最优雅的,因此我删除了Integer.toHexString()的实现。

编辑 2015 年 9 月 4 日:我找到了一个更优雅的解决方案http://introcs.cs.princeton.edu/java/31datatype/Hex2Decimal.java.html

2

考虑下面的 dec2m 方法,用于从 dec 转换为 hex,oct 或 bin。

示例输出为

28 dec == 11100 bin 28 dec == 34 oct 28 dec == 1C hex
public class Conversion {
    public static void main(String[] argv) {
        int x = 28;                           // sample number
        if (argv.length > 0)
            x = Integer.parseInt(argv[0]);    // number from command line
        System.out.printf("%d dec == %s bin\n", i, dec2m(x, 2));
        System.out.printf("%d dec == %s oct\n", i, dec2m(x, 8));
        System.out.printf("%d dec == %s hex\n", i, dec2m(x, 16));
    }
    static String dec2m(int N, int m) {
        String s = "";
        for (int n = N; n > 0; n /= m) {
            int r = n % m;
            s = r < 10 ? r + s : (char) ('A' - 10 + r) + s;
        }
        return s;
    }
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(314)
二次公式AppInventor2
上一篇
什么是空终止字符串 (string null terminator)
下一篇

相关推荐

  • java游戏下载器:下载最新的Java游戏,体验不一样的乐趣!

    Java游戏下载器是一种用于从网络上下载Java游戏的客户端程序。它可以帮助用户快速、安全地下载Java游戏,并将它们保存到本地磁盘上。…

    2023-01-13 07:05:24
    0 80 49
  • java质数判断:如何使用Java判断质数

    质数(prime number)又称素数,指在大于1的自然数中,除了1和它本身以外不再有其他因数。Java代码如下:…

    2023-01-27 13:26:28
    0 31 96
  • java游戏盒子:玩转Java游戏盒子,体验不一样的乐趣!

    Java游戏盒子是一种特殊的Java应用程序,它可以把多个Java小游戏集中在一起,方便玩家管理和运行这些游戏。代码如下:…

    2023-01-28 09:18:41
    0 82 62
  • java递归详解一种解决问题的有效方法

    Java递归是一种编程技术,它允许一个函数调用自身。它使用一个或多个参数,以便在每次调用时将其状态更改,以便最终到达基本情况,从而终止递归。…

    2023-01-26 11:53:11
    0 61 81
  • java监控:如何使用Java监控提升应用性能

    Java监控是一种方法,用于监视Java应用程序的性能和可用性。它可以帮助开发人员了解Java应用程序的运行情况,并在发生问题时及时采取行动。Java监控可以通过多种方式来实现,例如使用Java虚拟机(JVM)内置的监控工具,使用第三方监控工具,或者使用自定义代码来实现。…

    2023-01-07 14:45:39
    0 19 90
  • java开发游戏培训从入门到精通

    示例示例Java开发游戏培训是一种使用Java语言开发游戏的培训课程,旨在帮助学习者掌握如何使用Java语言开发游戏。该培训课程将介绍Java语言的基本概念,包括变量、数据类型、流程控制、函数、类、对象、继承、接口、异常处理等。学习者还将学习如何使用Java语言开发游戏,包括游戏设计、游戏开发、游戏测试和游戏发布等。…

    2023-01-02 03:08:06
    0 13 58
  • java在线中文视频从入门到精通

    Java在线中文视频是指使用Java语言开发的在线视频,它可以在互联网上播放和浏览,而无需下载。它可以使用HTML5、Flash Player或其他技术来实现。…

    2023-01-20 12:32:35
    0 79 37
  • java数据库是什么:如何使用Java来构建强大的数据库系统

    Java数据库是一种使用Java编写的数据库,它可以在Java虚拟机上运行,并且可以使用Java API来访问和操作数据库。它允许开发人员使用Java语言来创建和管理数据库,而无需学习SQL。…

    2023-01-20 02:42:24
    0 58 94

发表评论

登录 后才能评论

评论列表(51条)