您的位置:首页 > 其它

华为研发笔试(十六进制转10进制)

2018-03-15 22:16 337 查看
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。

输出描述:
输出该数值的十进制字符串。
输入例子1:
0xA

输出例子1:
10
#include<iostream>
#include<string>
#include<math.h>

using namespace std;

int main()
{
string in;
while (cin >> in){

string ox = "123456789ABCDEF";
double out = 0;
int len = in.length();
for (int i = len - 1; i >=2; i--){
int index = ox.find(in[i]);
double m = pow(16, len -1- i);
out += m* (index + 1);

}
cout << out << endl;
}
return 0;
}注意:
1、if for 等后面括号里面的内容一定要看好,不能写错,i--不能写成i++
2、进制转换,字符串与整数的转换再看看int hex_char_value(char c)
{
if(c >= '0' && c <= '9')
return c - '0';
else if(c >= 'a' && c <= 'f')
return (c - 'a' + 10);
else if(c >= 'A' && c <= 'F')
return (c - 'A' + 10);
assert(0);
return 0;
}
int hex_to_decimal(const char* szHex, int len)
{
int result = 0;
for(int i = 0; i <
aeca
len; i++)
{
result += (int)pow((float)16, (int)len-i-1) * hex_char_value(szHex[i]);
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: