2进制转化为16进制
-
时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
输入一个2进制的数,要求输出该2进制数的16进制表示。
在16进制的表示中,A-F表示10-15
输入
- 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000 输出
- n行,每行输出对应一个输入。
样例输入
2
100000
111
样例输出
20
7
参考代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int cases = cin.nextInt();
cin.nextLine();
while(cases > 0){
String num = new String();
num = cin.nextLine();
System.out.println(convert(num));
cases --;
}
}
private static StringBuffer convert(String num) {
StringBuffer sb = new StringBuffer();
char sch[] = num.toCharArray();
int len = sch.length;
int op = 0;
char ch;
int b = 0;
int t = 1;
for(int i = len - 1;i >= 0;-- i){
b += (sch[i] - '0') * t;
op ++;
t *= 2;
if(op == 4){
if(b >= 10){
ch = (char)(b - 10 + 'A');
}else{
ch = (char)(b + '0');
}
b = 0;
op = 0;
t = 1;
sb.append(ch);
}
}
if(op != 0){
if(b >= 10){
ch = (char)(b - 10 + 'A');
}else{
ch = (char)(b + '0');
}
sb.append(ch);
}
return sb.reverse();
}
}