这不很简单吗?
2025-12-23 14:53:40
发布于:广东
28阅读
0回复
0点赞
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// 二进制分组转换为目标进制字符串(group_len:分组长度,如4表示十六进制)
string bin2base(string bin, int group_len) {
// 补前导0,使长度为group_len的整数倍
int pad = (group_len - bin.size() % group_len) % group_len;
bin = string(pad, '0') + bin;
string res;
// 十六进制字符映射表
const char hex_chars[] = "0123456789ABCDEF";
// 逐组转换
for (int i = 0; i < bin.size(); i += group_len) {
string group = bin.substr(i, group_len);
int val = 0;
for (char c : group) {
val = val * 2 + (c - '0');
}
res += hex_chars[val];
}
// 去除前导0(若结果全为0则保留一个0)
size_t start = res.find_first_not_of('0');
if (start == string::npos) return "0";
return res.substr(start);
}
int main() {
string x;
cin >> x;
// 转换为四进制(分组长度2)、八进制(3)、十六进制(4)
cout << bin2base(x, 2) << endl;
cout << bin2base(x, 3) << endl;
cout << bin2base(x, 4) << endl;
return 0;
}
这里空空如也




有帮助,赞一个