输入一个2进制的数,要求输出该2进制数的16进制表示。在16进制的表示中,A-F表示10-15。 输入 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000。 输出 n行,每行输出对应一个输入。 样例输入 复制 2 100000 111 样例输出 复制 20 7
时间: 2024-03-25 22:37:30 浏览: 55
以下是一个 C++ 的代码实现,可以将二进制数转换为十六进制数:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
while (n--) {
string s;
cin >> s;
// 将二进制字符串转换为十进制数
int num = 0;
for (char c : s) {
num = num * 2 + (c - '0');
}
// 将十进制数转换为十六进制字符串
string hex;
while (num) {
int rem = num % 16;
if (rem < 10) {
hex += rem + '0';
} else {
hex += rem - 10 + 'A';
}
num /= 16;
}
// 反转字符串并输出
reverse(hex.begin(), hex.end());
cout << hex << endl;
}
return 0;
}
```
代码思路:
1. 首先读入测试数据的组数 n。
2. 对于每组测试数据,读入一个二进制字符串 s。
3. 将二进制字符串转换为十进制数 num。
4. 将十进制数 num 转换为十六进制字符串 hex。
5. 反转十六进制字符串 hex 并输出。
需要注意的是,在将二进制字符串转换为十进制数时,可以使用迭代或者递归的方法,本代码使用了迭代的方法。在将十进制数转换为十六进制字符串时,可以使用除 16 取余的方法,将余数转换为对应的十六进制数。
阅读全文