java中进制之间的相互转化
程序员文章站
2024-03-18 14:32:34
...
java中进制之间的相互转化
进制之间的相互转化 java其实已经封装好了 API中可以看到 在java.lang.Integer就可以看到
以上三个分别是十进制转化为二,八,十六进制的方法
String str=Integer.toBinaryString(16);
System.out.println(str);
String str1=Integer.toOctalString(16);
System.out.println(str1);
String str2=Integer.toHexString(16);
System.out.println(str2);
结果
10000
20
10
我们看到了tostring的另一个用法 它也可以用来用十进制转化为其他进制
String s1=Integer.toString(999, 2);
System.out.println(s1);
String s2=Integer.toString(999, 8);
System.out.println(s2);
String s3=Integer.toString(999, 16);
System.out.println(s3);
1111100111
1747
3e7
这个是二,八,十六转化为十进制的方法
String a=Integer.valueOf("3e7",16).toString();
System.out.println(a);
String b=Integer.valueOf("1747",8).toString();
System.out.println(b);
String c=Integer.valueOf("11111",2).toString();
System.out.println(c);
999
999
31
由上面的例子我们可以用来2,8,16 进制之间的相互转化 也就是先转化为十进制 然后再转化为其他进制来个二进制转化为十六进制
String c=Integer.toHexString(Integer.valueOf("11111",2));
System.out.println(c);
1f
下面的是自己写的十进制转化为二进制的方法
System.out.println("十进制转化为二进制");
Scanner a=new Scanner(System.in);
int str=a.nextInt();
StringBuilder sb=new StringBuilder();
for(int i=0;;i++){
int j=str%8;
sb.append(j);
str=str/8;
if(str==1){
sb.append(str);
break;
}
}
System.out.println(sb.reverse());
二进制转化为十进制的方法
System.out.println("二进制转化为10进制");
Scanner a=new Scanner(System.in);
String str=a.nextLine();
char []s=str.toCharArray();
double j=0;
for(int i=0;i<s.length;i++){
j=j+Math.pow(8,s.length- i-1)*Integer.parseInt(String.valueOf(s[i]));
}
System.out.println(j);
以后还会补充位运算