以下是用C++编写的十六进制转八进制的示例代码:
#include<bits/stdc++.h>
using namespace std;
string hexToOct(string hex) {
string oct = "";
int len = hex.length();
// 如果十六进制数长度不是3的倍数,则在前面加0
if (len % 3 == 1) hex = "00" + hex;
else if (len % 3 == 2) hex = "0" + hex;
len = hex.length();
// 将每三位十六进制数转换为对应的一位八进制数
for (int i = 0; i < len; i += 3) {
int num = (hex[i] - '0') * 16 + (hex[i + 1] - '0') * 1 + (hex[i + 2] - '0') * 4;
oct += to_string(num);
}
// 去掉前导0
oct.erase(0, min(oct.find_first_not_of('0'), oct.size() - 1));
return oct;
}
int main() {
string hex;
cout << "输入一个十六进制数:";
cin >> hex;
cout << hex << " 的八进制表示为:" << hexToOct(hex) << endl;
return 0;
}