求解!!! 一道蓝桥杯的题 结果对的 提交老是出错,
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main() {
string number;
unsigned long int number_10 = 0;
cin >> number;
int n = number.length();
for(int i = number.length(); i > 0; i--)
{
// cout << number[i - 1] << endl;
switch(number[i - 1])
{
case '0':number_10 += 0 * pow(16,(i - 1));break;
case '1':number_10 += 1 * pow(16,(i - 1));break;
case '2':number_10 += 2 * pow(16,(i - 1));break;
case '3':number_10 += 3 * pow(16,(i - 1));break;
case '4':number_10 += 4 * pow(16,(i - 1));break;
case '5':number_10 += 5 * pow(16,(i - 1));break;
case '6':number_10 += 6 * pow(16,(i - 1));break;
case '7':number_10 += 7 * pow(16,(i - 1));break;
case '8':number_10 += 8 * pow(16,(i - 1));break;
case '9':number_10 += 9 * pow(16,(i - 1));break;
case 'A':number_10 += 10 * pow(16,(i - 1));break;
case 'B':number_10 += 11 * pow(16,(i - 1));break;
case 'C':number_10 += 12 * pow(16,(i - 1));break;
case 'D':number_10 += 13 * pow(16,(i - 1));break;
case 'E':number_10 += 14 * pow(16,(i - 1));break;
case 'F':number_10 += 15 * pow(16,(i - 1));break;
default :break;
}
//cout << number_10 << '\n';
}
cout << number_10 << '\n';
return 0;
}
一开始以为是数据类型的问题,改了还是有问题,不知道怎么弄。。。。