您的位置:首页 > 编程语言 > Java开发

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

2017-07-13 11:11 501 查看
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);

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: