C++ 八进制转十六进制:古老宝箱的密码
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;
}
原文地址: https://www.cveoy.top/t/topic/nGNW 著作权归作者所有。请勿转载和采集!