天天看点

十六进制字符串转化为十进制数值

以下代码是把十六进制字符串转化为十进制数值

转换函数是hexStr2decimal,代码如下。

#include <iostream>
#include <map>
#include <string>
#include <math.h>
using namespace std;
//function transfer hex string to deciaml
bool hexStr2decimal(string &str, int &decimal)
{
    if(str[]=='0'&& str[]=='x'){
        decimal = ;
        int strSize = str.size();
        for(int i=; i<strSize; i++){
            if(str[i]<='9' && str[i]>='0')
                decimal += static_cast<int>((str[i]-'0')*pow(,strSize-i-));
            else if(str[i]<='F' && str[i]>='A')
                decimal += static_cast<int>((str[i]-'A'+)*pow(,strSize-i-));
            else
                return false;   
        }
        return true;
    }else{
        return false;
    }
}
int main()
{
    string str;
    int decimal;
    while(cin>>str){
        if(hexStr2decimal(str,decimal))
            cout<<decimal<<endl;
    }
    return ;
}