进制转换封装库
#include <iostream>
#include <string>
using namespace std;
/****************************************************************************
* 函数功能:字符串转换为数字 将任意2-36进制表示的字符串转化为十进制数。
* @param s对应进制的字符串,不含前缀如0x,0等
* radix 字符串是几进制表示的
*
* @return 当前毫秒数
*****************************************************************************/
int AToI(string& s,const int& radix)
{
int ans = 0;
char t ='0';
for (size_t i=0;i<s.size();++i)
{
t = s[i];
if (t >= '0' && t <= '9')
{
ans = ans * radix + t - '0';
}
else
{
ans = ans * radix + t - 'a' + 10;
}
}
return ans;
}
/****************************************************************************
* 函数功能:数字转换为字符串 将十进制转换为对应的几进制表示的字符串
* @param n 数字
* radix 几进制
*
* @return 当前毫秒数
*****************************************************************************/
string IToA(int n, int radix)
{
string ans = "";
int t = 0;
do {
t = n % radix;
if (t >= 0 && t <= 9)
{
ans += t + '0';
}
else
{
ans += t - 10 + 'a';
}
n /= radix;
} while (n != 0);
reverse(ans.begin(), ans.end());
return ans;
}
int main()
{
cout << IToA(32, 16) << endl;
string s = "42";
cout << AToI(s,16) << endl;
getchar();
return 0;
}