十进制转十六进制原理
十六进制转十进制原理
代码实现十进制转十六进制
package p2.线性结构;
public class DecToHex {
public static void main(String[] args) {
int num = 654321;
ArrayStack<String> stack = new ArrayStack<>();
while (num != 0){
int a = num % 16;
if(a < 10){
stack.push(a + "");
}else {
stack.push((char)(a + 55)+"");
}
num /= 16;
}
StringBuilder sb = new StringBuilder();
while (!stack.isEmpty()){
sb.append(stack.pop());
}
System.out.println(sb.toString());
}
}
结果为
9FBF1
代码实现十六进制转十进制
public class HexToDec {
public static void main(String[] args) {
String hex = "9FBF1";
ArrayStack<Character> stack = new ArrayStack<>();
for(int i = 0; i <hex.length();i++){
stack.push(hex.charAt(i));
}
int sum =0;
int mi = 0;
while (!stack.isEmpty()){
char c = stack.pop();
sum += getNumber(c) * Math.pow(16,mi);
mi++;
}
System.out.println(sum);
}
private static int getNumber(char c) {
if(!(c >='0' && c<= '9' || c>='A' && c <='F')){
throw new IllegalArgumentException("wrong char!");
}
if(c >= '0' && c <= '9'){
return c - '0';
}else {
return c - 'A' + 10;
}
}
}
结果为
654321