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;
}

代码解释:

  1. 我们定义了一个名为 hexToOct 的函数,它接受一个十六进制字符串作为参数,并返回一个对应的八进制字符串。
  2. hexToOct 函数中,我们使用了一个 octDigits 数组来存储从 0 到 7 的八进制数字。
  3. 然后我们遍历输入的十六进制字符串的每个字符,根据其对应关系将其转换为八进制数,并将其添加到结果字符串 oct 中。
  4. 最后,我们返回 oct 字符串。
  5. main 函数中,我们读取输入的十六进制字符串,调用 hexToOct 函数将其转换为八进制字符串,并输出结果。

使用指南:

  1. 将上述代码保存为 .cpp 文件(例如 hex_to_oct.cpp)。
  2. 使用 C++ 编译器编译代码:g++ hex_to_oct.cpp -o hex_to_oct
  3. 运行程序:./hex_to_oct
  4. 在程序提示符下输入十六进制数,并按回车键。程序将输出对应的八进制数字。

现在,你已经掌握了将十六进制数字转换为八进制数字的技巧,可以轻松解开古老宝箱上的密码了!

C++ 十六进制转八进制:解开古老宝箱的秘密

原文地址: https://www.cveoy.top/t/topic/nP2X 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录