十进制转十六进制十六进制转十进制
十进制转十六进制- 创建一个String类型的顺序栈,存放数字和字符十进制除16取余,余数若小于10则直接进栈;若大于10,通过(char)(余数+55)转成字母(char)(65)是A除尽后定义一个字符串接收栈的出栈,并输出
package p2.线性结构;
//顺序栈十进制转十六进制
public class DecToHex {
public static void main(String[] args) {
int num = 654321;
ArrayStack 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);
}
}
十六进制转十进制
- 创建一个Character(字符型)的顺序栈并将16进制的字符串逐一进栈再将栈内的字符一个个弹出,进行加权计算对于数字或字母(弹栈出来都是char类型),如果是字母,则c - ‘A’ + 10进行转换(‘A’-‘A’=0),如果是数字,则c-‘0’(‘1’-‘0’=1)将字符转换成数字
package p2.线性结构;
//顺序栈实现十六进制转十进制
public class HexToDec {
public static void main(String[] args) {
String hex = "9FBF1";
ArrayStack stack = new ArrayStack<>();
for (int i = 0;i= '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;
}
}
}


![顺序栈实现十进制和十六进制转换[java] 顺序栈实现十进制和十六进制转换[java]](http://www.mshxw.com/aiimages/31/703810.png)
