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);
}
}
}
上一篇: 3.7java中输入输出文件读取
下一篇: Java中输入输出文件流操作