十进制转十六进制
import java.util.Scanner;
//十进制转十六进制
public class DecToHex {
public static void main(String[] args) {
//1、获取用户的输入 非负整数
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个十进制数字");
int number=scanner.nextInt();
//创建一个栈用来存储余数 存的是字符数据
ArrayStack<Character> stack=new ArrayStack<Character>();
int mod;
//计算余数
while(number!=0){
mod=number%16; //获取余数
if(mod<10){
//'0'+3= 表示的是字符'0'之后第三个位置的字符‘3’的编码
stack.push((char) ('0'+mod));
}else{
//'A'+11-10=表示的是字符'A'之后第三个位置的字符‘B’的编码
stack.push((char) ('A'+mod-10));
}
number/=16;
}
while (!stack.isEmpty()){
System.out.print(stack.pop());
}
}
}
执行结果
请输入一个十进制数字
555
22B
十六进制转十进制
import java.util.Scanner;
public class HexToDec {
public static void main(String[] args) {
//1、获取用户的输入 非负整数
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个十六进制数字");
String hex=scanner.nextLine();
//创建一个栈用来存储余数 存的是字符数据
ArrayStack<Character> stack=new ArrayStack<Character>();
//进栈
for(int i=0;i<hex.length();i++){
stack.push(hex.charAt(i));
}
//弹栈,计算结果
int sum=0;
int exponent=0; //幂数
char c;
while (!stack.isEmpty()){
c=stack.pop();
sum+=getNumber(c)*Math.pow(16,exponent);
exponent++;
}
System.out.println(sum);
}
private static int getNumber(char c) {
if(!(c>='0'&&c<='9'||c>='A'&&c<='F')){
throw new IllegalArgumentException("输入异常");
}
if(c>='0'&&c<='9'){
//转换数字字符为数字
return c-'0';
}else {
//转换字母字符为数字
return c-'A'+10;
}
}
}
执行结果
请输入一个十六进制数字
22B
555