[英]How to convert binary fraction into hexadecimal in Java?
如何在Java中将二进制分数或十进制分数转换为十六进制?
这样做的算法是什么?
例如我想将(11.110)2转换为(3.C)16
以及我需要保留十六进制分数的哪种数据类型?
请帮助。 谢谢。
这个答案并不是要成为如何制作一个可以从一个基数转换为另一个基数的完整程序的完整指南,但是它提到了要使用内置方法时必须执行的大多数步骤。可用。
没有用于转换浮点数的内置方法,但是有用于将整数从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
转换。 记住再次插入基数点,就可以了。
要将二进制手动转换为十六进制,您需要做的与整数一样 ,几乎没有区别。
从小数点开始,将二进制数分成4个连续的数字组,从左到右。 根据需要添加前导/尾随零。 其余内容如链接中所述。
例如: 101011.011
分为0010 1011 . 0110
将每个集合转换为十六进制后的0010 1011 . 0110
变为2B.6
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.