对于进制转换,c/c++要用到辗转相除,不仅浪费时间,还造成代码量繁多,而任意之间的进制转换还需要以十进制为跳板,
先将其他进制的数字转换为十进制,再将十进制转换为其他进制,而java中自带进制转换的函数与方法,可以直接导包调用,非常方便,下面就是十
进制(非大数,是普通整数)转换其他进制的代码,注意转换后是字符串:
package Main; import java.util.Scanner; public class Main { public static void main(String[] args) { int a=123; String s1=Integer.toBinaryString(a); //将整数a转换成二进制字符串并输出 System.out.println(s1); String s2=Integer.toOctalString(a); //将整数a转换成八进制字符串并输出 System.out.println(s2); String s3=Integer.toHexString(a); //将整数a转换成十六进制字符串并输出 System.out.println(s3); //Integer.toString(i,x),将i转换成任意x进制 String s4=Integer.toString(a,7); //将整数a转换成7进制并输出 System.out.println(s4); } }
下面是其他进制转换成10进制
package Main; import java.util.Scanner; public class Main { public static void main(String[] args) { // Integer.valueof("s",x); s是对应的某个进制的字符串,x对应当前字符串的进制 System.out.println("其它制转换到十进制:"); int y1= Integer.valueOf("FFFF",16); ///16进制转换成10进制 System.out.println(y1); int y2=Integer.valueOf("776",8); ///8进制转换成10进制 System.out.println(y2); int y3=Integer.valueOf("0101",2); //2进制转换成10进制 System.out.println(y3); int y4=Integer.valueOf("101",7); //7进制转换成10进制 System.out.println(y4); System.out.println("其它的可能用到的函数:"); //static int parseInt(String s, int radix) //使用第二个参数指定的基数,将字符串参数解析为有符号的整数。 int n = Integer.parseInt("776", 8) ; ///8进制转换成10进制 System.out.println(n); ///Integer.valueOf()返回一个“integer对象”和Integer.parseInt()返回一个“int值”的区别在于,返回值不同 ///基本常识,其他的非10进制的数的保存,基本都是以字符串的形式 ///例子:7进制到8进制的转换 String q = "6523" ; ///7进制的字符串 String b = Integer.toString(Integer.valueOf(q,7),8) ;///这样7进制就变成8进制了 } }
下面将进行终极宝典,大数的任意进制转换成任意进制
package Main; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); String s = cin.nextLine(); int x = cin.nextInt(); int y = cin.nextInt(); System.out.println(Transform(s,x,y)); } //s:输入的数字 x:原数的进制 y:要转化成的进制 public static String Transform(String s,int x,int y) { return new java.math.BigInteger(s,x).toString(y); } } }