写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
输入例子:
0xA
输出例子:
10
代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
char flag[2];
string input;
int value = 0;
while (cin>>input)
{
unsigned int len = input.length(), k = 0;
for (int i = 0; i < 2; ++i)
flag[i] = input[i];
if (flag[0] == '0'&&flag[1] == 'x'&&len>2)
{
if (input[2] >= 'A'&&input[2] <= 'F')
value += input[2] - 'A' + 10;
else if (input[2] >= '0'&&input[2] <= '9')
value += input[2] - '0';
else
return -1;
for (int i = 3; i < len; ++i)
{
if (input[i] >= 'A'&&input[i] <= 'F')
value = value * 16 + input[i] - 'A'+10;
else if (input[i] >= '0'&&input[i] <= '9')
value = value * 16 + input[i] - '0';
}
}
else
continue;
while (value)
{
input[k]= value % 10 + '0';
value /= 10;
++k;
}
char *p;
p = new char[k - 1];
for (int i = 0; i < k; ++i)
p[i] = input[k - i - 1];
cout << p << endl;
}
return 0;
}