大家好,我是你们的晴天学长,在进制转换中,有的语言有自己的类,比如Java的Integer类,但是在算法学习中,我们更要懂得其中的逻辑,才能一通百通,行走在进制转换的江湖上,才能得心应手!需要的小伙伴请自取哦!💪💪💪
1 ).二进制求和
2 ) . 代码示例
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] str = new String[n];
StringBuilder ans = new StringBuilder();//StringBuilder用法,用于拼接字符串
for (int le = 0; le < n; le++) {
str[le] = sc.next();
}
for (int i = 0; i < str.length; i++) {
long m = 1l;//次方数
long sum = 0l;
for (int j = str[i].length() - 1; j >= 0; j--) {//十六进制转化十进制
if (str[i].charAt(j) >= 'A') {
sum += (str[i].charAt(j) - 'A' + 10) * m;
m *= 16;
} else {
sum += (str[i].charAt(j) - '0') * m;
m *= 16;
}
}
while (sum != 0) {//十进制转化为八进制
ans.append(sum % 8);
sum /= 8;
}
System.out.print(ans.reverse());//反转
if (i<str.length-1){
System.out.println();
}
ans.delete(0,ans.length());//重置
}
sc.close();
}
}
3 ) . 总结
- 十六进制转十进制的方法,其他进制也是一样的,都是提取出来再乘以次方数。
- 十进制转化为其他进制的时候,采用取余除数法,直到商为零,转其他进制也是一样的,以此类推。
- 温馨提示:这只是一种解法,我们知道其逻辑就好了,在本题中,因为输入数据量太大了,long型都不够,所以本题正确解法是十六进制转为二进制,再转为八进制,这方法我也会在后续更新。