将一个十进制整数转换成对应的十五进制数
(2017-08-10 11:11:53)
标签:
进制转换这个数字转化成对应的面试题进制转换 |
分类: 面试总结 |
面试题:输入一个十进制整数,将这个数字转化成对应的十五进制数(在十五进制中,A表示10,B表示11,C表示12,D表示13,
E表示14),请写入转换程序。例如:235表示为10A;
分析:进制转换思路:10进制除以15商和余数,反复拿商除以15获得商和余数,类推,知道商为0,停止;
以235表示为10A为例分析:
235/15 = 15 余数10
15/15 = 1 余数 0
1/15 = 0 余数 1
得到数据10, 0, 1, 反序结果为1, 0, 10, 对比结果: 1-》1, 0-》0, 10-》A,
所以235表示的十五进制数为:10A;
代码实现:
@Test
public void testTimes() {
System.out.println("十进制转二进制:" +
Integer.toBinaryString(1000211));
Scanner scanner = new Scanner(System.in);
System.out.println("请输入十进制数字::::");
String temp = scanner.next();
Integer in = Integer.parseInt(temp, 10);
List list = Lists.newArrayList();
while(true) {
list.add(in % 15); // 取余数
in = in / 15; // 取余数
if (in == 0) { // 停止循环
break;
}
}
StringBuffer str = new StringBuffer(); // 拼接字符串
// 倒排
for (int i = list.size() - 1 ; i >= 0; i--) {
int number = list.get(i);
if (number == 10) {
str.append("A");
} else if (number == 11) {
str.append("B");
} else if (number == 12) {
str.append("C");
} else if (number == 13) {
str.append("D");
} else if (i == 14) {
str.append("E");
} else {
str.append(number);
}
}
System.out.println(str);
scanner.close(); // 用完关闭流
}
扩展:方法parseInt(String
s,int radix)的目的是输出一个十进制数
例子 输入十六进制转换成为十进制输出
Integer.parseInt(str,16));
我们平时用到Integer.parseInt("123");其实默认是调用了int i =Integer.parseInt("123",10);
其中10代表的默认是10进制的,转换的过程可以看成:
i= 1*10*10+2*10+3
若是
int i = Integer.parseInt("123",16);
即可以看成:
i = 1*16*16+2*16+3 = 291
根据:Character.MIN_RADIX=2和Character.MAX_RADIX=36 则,parseInt(String s, int radix)参数中
radix的范围是在2~36之间,超出范围会抛异常。其中s的长度也不能超出7,否则也会抛异常。

加载中…