如何在 Java 中将二进制小数或小数部分转换为十六进制?
这样做的算法是什么?
例如,我希望(11.110)2转换为(3.C)16
我需要哪种数据类型来保存十六进制分数?
plz帮助。 感谢。
答案 0 :(得分: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
。然后,您应该将数字转换为double
或BigDecimal
,并确保通过除以正确的数字将小数点恢复原位。例如,您可以将(1234)6转换为(12.34)6除以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
。