最近在找进制转换的学习视频,发现解法是千奇百怪
有从c++直接转化成java的短除法
还有一堆莫名其妙的方法
在查了一晚上资料后,我对此做了整理
16进制转化成8进制
public static void main(String[] args) {
// 16进制数的字符串表示
String hex = "39";
// 将16进制数转换为整数
int decimal = Integer.parseInt(hex, 16);
// 将整数转换为8进制的字符串表示
String octal = Integer.toOctalString(decimal);
// 输出结果
System.out.println("16进制数 " + hex + " 对应的8进制数为: " + octal);
}
}
2进制转化成10进制
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a= scanner.nextInt();
//输入整型数
String string=Integer.toString(a);
//将整数转化成字符串
int b=Integer.parseInt(string,2);
//进制转换,第一个参数是字符串,第二个参数是基数,进制
System.out.println(b);
}
}
16进制转化成10进制
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str=scanner.nextLine();
//输入一个十六进制的字符串
int a=Integer.parseInt(str,16);
//将字符串按照16进制转化成整形数
System.out.println(a);
}
}
10进制转化成2进制
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a= scanner.nextInt();
//输入整型数
String string=Integer.toBinaryString(a);
//将整数转化成字符串
System.out.println(string);
}
}
10进制转化成16进制
import java.util.Scanner;
public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in);
int a= scanner.nextInt();
//输入整型数
String string=Integer.toHexString(a);
//将整数转化成字符串
System.out.println(string);
}
}
总结
Integer类中的静态方法parseInt可以将字符串转化成十进制数
即是字符串转整形数 这时的形参是字符串
而这个parsInt方法重载
当传入两个形参的时候 第一形参依旧是字符串 第二个形参可以传入进制基数radix
代表你想把什么进制的数转化成十进制数
获得到的十进制数 可以再通过Integer类里面的静态方法to...转化为对应的进制
返回值类型是字符串
Integer.toOctalString()转化成八进制
Integer.toBinaryString() 转化为二进制
Integer.toHexString() 转化为十六进制
以下介绍一下短除法
定义一个方法
形参是十进制数,进制基数radix
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a= sc.nextInt();
//输入一个十进制的字符串
String str=jinzhizhuanhuan(a,2);
System.out.println(str);
}
public static String jinzhizhuanhuan(int a,int b){
StringBuilder sb=new StringBuilder();
while(a>0){
sb.append(a%b);
a/=b;
}
return sb.reverse().toString();
}
}