等题出来再补上吧!反正不知道这个对不对!心好累!
输入:
3
0x62 0x80 0x00
2
4
5
输出:
6
5
输入几个十六进制的数据:0x62 0x80 0x00
得到它的二进制码0110 0010 1000 0000 0000 0000
要解出的数据个数:2
占byte未个数:4 ——> 0110 = 6
占byte未个数:5 ——> 00101 = 5
/**
*
测试用例:
输入:
3
0x62 0x80 0x00
2
4
5
输出:
6
5
*/
public class TestDemo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int a= scanner.nextInt();
//将s变成数字,再转成二进制,并保留高位0
String allstr="";
for(int i=0;i<a;i++) {
String b = scanner.next();
//十六->十进制
int dec_num = Integer.decode(b);
//十进制->二进制
String bin_num = Integer.toBinaryString(dec_num);
//保留高位0
String str = String.format("%08d", Integer.valueOf(bin_num));
//拼接
allstr+=str;
}
//输入字符个数、位长度
int a1= scanner.nextInt();
int[] arr= new int[a1+1];
arr[0]=0;
for(int i=1;i<=a1;i++) {
arr[i] = scanner.nextInt();
}
//截取字符,转成数字
for(int i=0;i<a1;i++) {
//这里arr[0]=0,注意每次截取的长度
String str = allstr.substring(arr[i], arr[i+1]+arr[i]);
//二进制转十进制
int arr_new = Integer.valueOf(str,2);
System.out.println(arr_new);
}
}
}