1.题目
2.题解
public class Main {
public static void main(String[] args) {
int n = Integer.parseInt("2021ABCD", 16);
System.out.println(n);
}
}
3.知识拓展:进制转换
3.1.直接用api,便捷;
/**
* x进制数 -> 十进制数
* @param str : 表示数据字符串
* @param number :表示str字符串是x进制数
*/
static void f1(String str , int number) {
//Integer.parseInt("1000",2) => (1000)2 = (8)10
int n = Integer.parseInt(str, number);
System.out.println(n);
}
/**
* 十进制数 -> 二进制数
* @param n :表示十进制数
*/
static void f2(int n) {
//Integer.toBinaryString(8) => (8)10 = (1000)2
String str = Integer.toBinaryString(n);
System.out.println(str);
}
3.2用原理解
3.2.1x.进制数 -> 十进制数
3.2.1.1.例题
3.2.1.2.代码展示
/**
* x进制数 -> 十进制数
* @param str : 表示数据字符串
* @param number :表示str字符串是x进制数
*/
static void f3(String str,int number) {
//1.把字符串转成数组
char ch[] = str.toCharArray();
//2.模拟计算
int sum = 0;//初始化十进制数值
int j = 0;//控制次方数
for (int i = ch.length -1; i >= 0; i--) {
int t = ch[i] ;
if (ch[i]>='0'&&ch[i]<='9') {
t -= '0';
}else if (ch[i]>='A'&&ch[i]<='Z') {
t = t -'A'+10;
}
sum += t*Math.pow(number, j++);
}
System.out.println(sum);
}
3.2.2.十进制数 -> x进制数
3.2.2.1.例题
3.2.2.2.代码展示
/**
* 十进制数 -> x进制数
* @param n : 表示十进制的数
* @param number : 要转换成的进制数
*/
static void f4(int n, int number) {
//1.定义一个动态字符串
StringBuilder sb = new StringBuilder();
//2.判断n是否为0
if (n == 0) sb.append("0");
else {
//3.模拟原理计算
while (n > 0) {
int t = n % number;
if (t >= 10) sb.append((char) (t + 'A' - 10));
else sb.append((char) (t + '0'));
n /= number;
}
}
//4.倒序输出
System.out.println(sb.reverse());
}
4.总结
进制之间的转换,在蓝桥杯中还是挺常考的。不知道进制之间转换的小伙伴,可以跟着知识加油站学习一下。
5.期望
如果您对我的写作有任何疑虑,或是您认为还有改进的空间,我很愿意提供帮助并指出问题所在。同时,如果您有其他好的想法或建议,也欢迎分享,我们可以相互学习和启发。
6.有偿辅导公告
本人高分通过软件设计师考试,如果有正在备考软设的小伙伴,需要真题资料或辅导服务,请私信我,谢谢!