如何在 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
。
然后,您应该将数字转换为 double
或 BigDecimal
,并通过除以正确的数字确保小数点回到原位。例如,您可以将 (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/