欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 10进制和16进制的相互转换

程序员文章站 2022-03-01 18:06:44
...

16进制转10进制

思路:求得每一位对应的16的幂,然后乘以这一位的数值,然后把求得的乘积相加

import java.util.*;
public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			String hex=sc.next().substring(2).toUpperCase();
			int len=hex.length();
			int result=0;
			for(int i=0;i<len;i++){
				char val=hex.charAt(len-i-1);
				if(val>='A'&&val<='F'){
					result+=Integer.valueOf(val-55)*Math.pow(16, i);//A是65,B\是66,减去55刚好是10、11
				}else{
					result+=Integer.valueOf(val-48)*Math.pow(16, i);//48是数字0。val-48就是int型数值
				}
			}
			System.out.println(result);
		}
	}

}

10进制转16进制

思路:运用辗转相除法,取余数补对应的位数,直到相除结果为0

import java.util.*;
public class Main1 {
	public static void main(String[] args) {
		
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			int n=sc.nextInt();
			char []ch=new char[20];
			int index=0;
			while(true){
				int m=n/16;
				int y=n%16;
				if(y==15)
					ch[index]='F';
				else if(y==14)
					ch[index]='E';
				else if(y==13)
					ch[index]='D';
				else if(y==12)
					ch[index]='C';
				else if(y==11)
					ch[index]='B';
				else if(y==10)
					ch[index]='A';
				else
					ch[index]=(char) ('0'+y);
				index++;
				if(m==0)
					break;
				n=m;
			}
			StringBuffer s=new StringBuffer();
			s.append(ch,0,index);
			s.reverse();
			String strHex="0x";
			strHex+=s.toString();
			System.out.println(strHex);
			
		}		
	}
}