C++ 十六进制转八进制:打开神秘宝箱的密码
C++ 十六进制转八进制:打开神秘宝箱的密码
你观察到一个神秘的古老宝箱,决定尝试打开它。但是,宝箱上面的密码是用十六进制编码的!幸运的是,你是一名优秀的程序员。以下是你需要解决的问题:宝箱上有一行神秘的十六进制数字,但无法直接读取它。你需要编写一个程序,将这个十六进制数字转换为八进制数字,以找到正确的密码。
输入描述
一个十六进制数,以字符串形式给出。该字符串只包含数、点('.')和字母(A-F),字母只包含大写。
输出描述
输出一行,表示对应的八进制数,以字符串形式给出。
样例 1
输入
1A
输出
32
样例 2
输入
8.1
输出
10.04
代码示例
#include <iostream>
#include <string>
std::string hexToOct(const std::string& hex) {
std::string oct;
for (char c : hex) {
if (c == '.') {
oct += '.';
continue;
}
int num;
if (c >= '0' && c <= '9') {
num = c - '0';
} else if (c >= 'A' && c <= 'F') {
num = c - 'A' + 10;
} else {
std::cerr << 'Invalid hex digit: ' << c << std::endl;
return '';
}
std::string octDigit;
while (num > 0) {
int rem = num % 8;
octDigit = std::to_string(rem) + octDigit;
num /= 8;
}
oct += octDigit;
}
return oct;
}
int main() {
std::string hex;
std::cin >> hex;
std::string oct = hexToOct(hex);
std::cout << oct << std::endl;
return 0;
}
解释
这个程序首先定义了一个函数 hexToOct,用于将十六进制数字转换为八进制数字。然后在 main 函数中,读取输入的十六进制数字,调用 hexToOct 函数进行转换,并输出结果。
注意,这个程序假设输入的十六进制数字是有效的,即只包含数、点('.')和字母(A-F),且字母只包含大写。如果输入不满足这些条件,程序会输出错误消息并返回空字符串。
原文地址: https://www.cveoy.top/t/topic/nPXN 著作权归作者所有。请勿转载和采集!