C++ 八进制转十六进制:古老宝箱的密码

当你观察到一个神秘的古老宝箱时,你决定尝试打开它。但是,宝箱上面的密码是用八进制编码的!幸运的是,你是一名优秀的程序员。以下是你需要解决的问题:宝箱上有一行神秘的八进制数字,但无法直接读取它。你需要编写一个程序,将这个八进制数字转换为十六进制数字,以找到正确的密码。

输入描述

一个八进制数,以字符串形式给出。该字符串只包含数(0-7)、点。

输出描述

输出一行,表示对应的十六进制数,以字符串形式给出,10-15以大写字母A-F表示。

样例1

输入

32

输出

1A

样例2

输入

10.04

输出

8.1

样例3

输入

1.5

输出

1.A

样例4

输入

32.0

输出

1A.0

提示

输入的八进制数对应的十进制数在0~~2147483647之间,可能会有小数

输入中有小数部分,保证输出一定有小数部分内容:

#include <iostream>
#include <string>

using namespace std;

string octalToHex(string octal) {
    string hex = '';
    int decimal = 0;
    int power = 0;
    
    // Convert octal to decimal
    for (int i = octal.length() - 1; i >= 0; i--) {
        if (octal[i] != '.') {
            decimal += (octal[i] - '0') * pow(8, power);
            power++;
        }
    }
    
    // Convert decimal to hex
    while (decimal > 0) {
        int remainder = decimal % 16;
        if (remainder < 10) {
            hex = to_string(remainder) + hex;
        } else {
            hex = static_cast<char>(remainder + 55) + hex;
        }
        decimal /= 16;
    }
    
    // Add decimal point if necessary
    if (octal.find('.') != string::npos) {
        hex += '.';
    }
    
    return hex;
}

int main() {
    string octal;
    cin >> octal;
    
    string hex = octalToHex(octal);
    cout << hex << endl;
    
    return 0;
}
C++ 八进制转十六进制:古老宝箱的密码

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

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