【问题标题】:How to convert binary fraction into hexadecimal in Java?如何在Java中将二进制分数转换为十六进制?
【发布时间】:2014-11-22 23:37:28
【问题描述】:

如何在Java中将二进制分数或十进制分数转换为十六进制?

这样做的算法是什么?
例如我想 (11.110)2 转换成 (3.C)16

我需要哪种数据类型来保存十六进制分数?

请帮忙。 谢谢。

【问题讨论】:

  • 您可以添加一个您尝试过的示例吗?
  • 什么是十六进制分数?它只是分子和分母的分数吗?那么 2011 年 12 月 10 日会是 0xA/0xB 吗?你能更好地解释这个问题吗? (另外,它是 Java,而不是 JAVA。)
  • 算法与转换十进制相同。您可以稍微优化它,但我会从一开始就这样做。
  • IntegerLongBigInteger 已经具有整数的此功能。您可以通过移动小数点来简单地在整数和浮点数之间进行转换。
  • 我知道将二进制分数转换为十进制分数的算法

标签: java algorithm binary hex


【解决方案1】:

这个答案并不是关于如何制作一个可以从一个基数转换为另一个基数的完全工作程序的完整指南,但它提到了如果你想使用内置的大多数步骤,你必须做-在可用的方法中。

没有用于转换浮点数的内置方法,但有用于将整数从/转换为 2-36 之间的任何基数的内置方法。如果您只需要在二进制和十六进制之间进行转换而不需要其他任何东西,您也可以手动进行(请参阅下面的行),但我建议您使用这些方法。

如果您从数字中删除小数点 .(在其 String-表示形式中),您会得到一个整数,但要跟踪小数点右侧有多少位数字。

以下三种方法可以将String 中的整数转换为任意基数:

  • Integer.parseInt(String val, int radix) 将转换为 int
  • Long.parseLong(String val, int radix) 将转换为 long
  • new BigInteger(String val, int radix) 将转换为 BigInteger

然后,您应该将该数字转换为 doubleBigDecimal,并确保将小数点除以正确的数字。例如,您可以通过将 (1234)6 除以 6² 将其变为 (12.34)6。

现在您已经完成了一半,基本上可以向后将数字转换回String(但使用其他一些基数)。

在您想要从int/long/BigInteger 转换为String 的步骤中,使用toString

  • Integer.toString(int val, int radix) 将从 int 转换。
  • Long.toString(long val, int radix) 将从 long 转换。
  • val.toString(int radix) 将从 BigInteger 转换。

记得再插入小数点,就完成了。


要手动从二进制转换为十六进制,您可以使用the same as you would do if they were whole numbers,几乎没有区别。

将二进制数分成 4 个连续数字的集合,从小数点开始,向左和向右。根据需要添加前导/尾随零。其余的如链接中所述。

例如:101011.011 被分成0010 1011 . 0110,每组转换为十六进制后变成2B.6

【讨论】:

    猜你喜欢
    • 2012-06-26
    • 2015-08-03
    • 2013-02-19
    • 2014-01-06
    • 2016-08-28
    • 2013-07-25
    相关资源
    最近更新 更多