java - 如何在Java中将二进制小数转换为十六进制?

标签 java algorithm binary hex

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

执行此操作的算法是什么?
例如我想 (11.110)2 转换成 (3.C)16

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

请帮忙。 谢谢。

最佳答案

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

没有用于转换 float 的内置方法,但有用于将整数与 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

关于java - 如何在Java中将二进制小数转换为十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26085302/

相关文章:

c# - 在时间轴恒定的位置和速度给定点的情况下构造曲线桥图的算法

c++ - C++ 中宏的二元运算

java - 从 FrameworkUtil 类获取 BundleContext 后抛出 NPE

python - 使用特定维度作为键对已排序列表进行排序

java 多态二叉搜索树

algorithm - Xcode TextField显示数字,但是代码添加小数

c - 保存和读取二进制列表?

java - 协助 Java 程序计算二进制数字

java - 字符串分割后保留分隔符 "-"("-")

java - 将带有特殊字符的 JSON 反序列化为字符串