java蓝桥杯十六进制转十进制

问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

import java.util.Scanner;

public class Main {
	public static void f(String s) {
		int n=0;
		long b;
		long sum=0;
			for(int i=s.length()-1;i>=0;i--) {
				char a=s.charAt(i);
				if(a=='A'||a=='B'||a=='C'||a=='D'||a=='E'||a=='F') {
					 b=a-'0'-7;
				}else 
					 b=a-'0';
//				b=b*16; //错误,若不用for循环,b每次都是全新的数,相当于每次都是*16的1次方
//				sum=sum+b;
				for(int j=0;j<n;j++) {
					b=b*16;
				}
				sum=sum+b;
				n++;	
		}
		System.out.println(sum);
	}
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		String s=input.next();
		f(s);
	}

}


注意定义为长整型,否则错误。

思路: 十六进制转十进制分两部分,字符型和整型。字符型的要先转化为整型才能去转十进制。

在转10进制的时候想的复杂了,不知道如何去写第一个*16的0次方,应该用for循环控制,且n一直加1.

    原文作者:进制转换
    原文地址: https://blog.csdn.net/zhangxue1232/article/details/79590413
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞