C++ 十六进制转八进制:解开古老宝箱的秘密
C++ 十六进制转八进制:解开古老宝箱的秘密
你发现了一个神秘的古老宝箱,想要打开它,但上面却刻着十六进制的密码!幸运的是,你是一名优秀的程序员,知道如何解决这个问题。
问题描述:
宝箱上有一行神秘的十六进制数字,但无法直接读取它。你需要编写一个 C++ 程序,将这个十六进制数字转换为八进制数字,以找到正确的密码。
输入描述:
一个十六进制数,以字符串形式给出。该字符串只包含数字、点(.) 和字母(A-F),字母只包含大写。
输出描述:
输出一行,表示对应的八进制数,以字符串形式给出。
示例 1:
输入:1A
输出:32
示例 2:
输入:8.1
输出:10.04
解决方案:
#include <iostream>
#include <string>
#include <cmath>
std::string hexToOct(std::string hex) {
std::string oct = '';
std::string octDigits[8] = {'000', '001', '010', '011', '100', '101', '110', '111'};
for (int i = 0; i < hex.length(); i++) {
char ch = hex[i];
if (ch >= '0' && ch <= '9') {
oct += octDigits[ch - '0'];
} else if (ch >= 'A' && ch <= 'F') {
oct += octDigits[ch - 'A' + 10];
} else if (ch == '.') {
oct += '.';
}
}
return oct;
}
int main() {
std::string hex;
std::cin >> hex;
std::string oct = hexToOct(hex);
std::cout << oct << std::endl;
return 0;
}
代码解释:
- 我们定义了一个名为
hexToOct的函数,它接受一个十六进制字符串作为参数,并返回一个对应的八进制字符串。 - 在
hexToOct函数中,我们使用了一个octDigits数组来存储从 0 到 7 的八进制数字。 - 然后我们遍历输入的十六进制字符串的每个字符,根据其对应关系将其转换为八进制数,并将其添加到结果字符串
oct中。 - 最后,我们返回
oct字符串。 - 在
main函数中,我们读取输入的十六进制字符串,调用hexToOct函数将其转换为八进制字符串,并输出结果。
使用指南:
- 将上述代码保存为
.cpp文件(例如hex_to_oct.cpp)。 - 使用 C++ 编译器编译代码:
g++ hex_to_oct.cpp -o hex_to_oct - 运行程序:
./hex_to_oct - 在程序提示符下输入十六进制数,并按回车键。程序将输出对应的八进制数字。
现在,你已经掌握了将十六进制数字转换为八进制数字的技巧,可以轻松解开古老宝箱上的密码了!
原文地址: https://www.cveoy.top/t/topic/nP2X 著作权归作者所有。请勿转载和采集!