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),且字母只包含大写。如果输入不满足这些条件,程序会输出错误消息并返回空字符串。

C++ 十六进制转八进制:打开神秘宝箱的密码

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

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