#include
#include
#include
#include
using namespace std;
bool Any2Dec(string &str, int system, double &val)
{
if (system < 2 && system > 36)
return false;
bool flag = false;
if (str[0] == '-')
{
flag = true;
str = str.erase(0, 1);
}
val = 0;
string fmt = "0123456789abcdefghijklmnopqrstuvwxyz";
int pos = str.find('.');
if (pos >= 0)
{
int exp = -1;
for (int i = pos+1; i < str.length(); i++, exp--)
{
int n = fmt.find(str[i]);
if (n < 0 || n >= system)
return false;
val += n * pow(system, exp);
}
}
else
{
pos = str.length();
for (int i = 0; i < pos; i++)
{
int n = fmt.find(str[i]);
if (n < 0 || n >= system)
return false;
val += n * pow(system, pos-1-i);
}
}
if (flag)
val = -val;
return true;
}
int main()
{
double x;
string str = "ff";
if (Any2Dec(str, 16, x))
cout << x << endl;
else
cout << "fmt err\n" << endl;
return 0;
}
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&ch=&rv_sd=13660_13387_13439_13203_13287_13602_13161_13257_11558_13085_8498&xpth=http%253A%252F%252Fwww.baidu.com%252Fs%253Fie%253Dutf-8%2526f%253D8%2526rsv_bp%253D1%2526tn%253D%2526wd%253Djquery%252520get%2526rsv_pq%253D85cb9ab80001cc79%2526rsv_t%253D5e5dhOzL7ZokcuO8mFu469Q5e9REnkJL1CKxnvfTLS5NLzBtEZvCU0fuv4s%2526rsv_enter%253D1%2526rsv_sug3%253D11%2526rsv_sug1%253D7%2526rsv_sug2%253D0%2526inputT%253D2736%2526rsv_sug4%253D4394+&tn=94910811_hao_pg&bar=&word=16%E8%BD%AC10%E8%BF%9B%E5%88%B6&rn=