题目详情 - 八进制转十六进制 - HydroOJ
题目描述
机器猫跑到外星人的图书馆去读书。有一本外星古籍,里面的内容是用八进制写成的;但机器猫只能处理十六进制的数据。请你帮忙写一个翻译软件,帮机器猫把八进制串翻译成十六进制串。
输入格式
仅一行,一个八进制字符串 s,表示古籍内容。
输出格式
仅一行,一个十六进制字符串,表示翻译结果。
输入数据 1
144
Copy
输出数据 1
64
Copy
提示
样例解释
第一组样例:八进制 144
即十进制下的 100,其十六进制表示为 64
。
代码展示
#include <bits/stdc++.h>
using namespace std;
char buffer[100005];
int octToInt(int l, int r) {
int n = 0;
for(int i=l; i<r; i++)
n = n * 8 + buffer[i] - '0';
return n;
}
void work(int len) {
int low = max(0, len - 4);
int n = octToInt(low, len);
if(low) {
work(low);
printf("%03x", n);
} else {
printf("%x", n);
}
}
int main() {
cin >> buffer;
work(strlen(buffer));
return 0;
}
感谢观看!!