通常的进制转换问题,除了十进制数与其余进制数的转换,还有除了十进制以外的进制转换。
例如:十六进制数与八进制数,八进制数与二进制数,二进制与转十六进制数之间的相互转化等等。
一、解题思想
对于这些情况的进制数转化问题,利用Java Api 提供的函数以及数学的解题思想相结合即可。在数学方面通常利用十进制数作为中间变量进行转化即可。以“十六进制”2F”转八进制"57”进行详细介绍,数学方法则是先将十六进制数"2F"转化为十进制数“47”(数学方面十六进制转化十进制在上一篇博客中详细介绍),然后将十进制数“47”转化为八进制数“57”(数学方面十进制转化八进制在上一篇博客中详细介绍)即可完成。那么在代码实现方面只要利用程序语言实现这种数学思想即可。首先,对于十六进制数,先将其转化为十进制数。在这个转化的过程中要使用Java提供的方法:
Long.parseLong(a,16);(第一个形参是要进行转化的十六进制数,而第二个形参代表你要转化的是几进制数,所以该方法可以将其余多种进制数转化为十进制数,例如:Long.parseLong(a,8);可以将八进制数“a”转化为十进制数,其余转化与之同理)。其次,将得到的十进制数转化为八进制数,在这个转化的过程中要使用Java提供的方法:
Integer.toOctalString(i);(其中形参i为上一部中得到的十进制数)。综合以上两部即可实现十六进制数到十进制数的转化。
下面给出具体的代码,以及java提供的将十进制数转化为二进制以及十六进制的方法
public class JinZhi2{根据以上提供的方法基本上可以完成大多数的进制转化问题,只是在十进制数转化为其余进制的方法有限,但是在学习与生活中常用的也就是十六进制,十进制,八进制,二进制之间的转化,而以上提到的方法,以及我上一篇博客的内容已经基本上可以完成这些进制数之间的随意转化了。当然更深层次以及进制数为负数的情况还不能实现转化,请大家注意!
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int i = (int)Long.parseLong(s, 16); //完成十六进制数到十进制数的转化
System.out.print(Integer.toBinaryString(i)); //完成十进制数到二进制数的转化
/*其中 Integer.toBinaryString(i);方法可以完成十进制数到二进制的转化,Integer.toHexSting(i);可以完成十进制数到十六进制数的转化*/
}