一道C++面试题

来源:百度知道 编辑:UC知道 时间:2024/06/22 17:58:04
将十六进制数字字符串转换为一个整数:例如输入"11",返回17(请自己写函数,不要用SScanf等C函数).

#include <iostream>
#include<fstream>
#include <vector>
#include <list>
#include <algorithm>
#include <string>
#include <cstdlib>
using namespace std;

int hexchar2int(char* str)
{
int i;
int multii = 1;
int ret = 0;
int len = strlen(str);

for(i=0;i<len;i++)
{
if(str[len-i-1] <= '9' &&str[len-i-1] >= '0' )
ret += (str[len-i-1]-'0')*multii;
else if(str[len-i-1] <= 'z' &&str[len-i-1] >= 'a' )
ret += (str[len-i-1]-'a' + 10)*multii;
else if(str[len-i-1] <= 'Z' &&str[len-i-1] >= 'A' )
ret += (str[len-i-1]-'A' + 10)*multii;
else
return -1;
multii*=16;
}

return ret;
}

int main()
{
char str1[10] = "10";
char str2[10] = "dc";