其它进制转10进制
10进制转其它进制
base进制的字符串 转成 10进制整型
#include<iostream>
using namespace std;//使用命令空间std
//base进制的字符串 转成 10进制整型
int stringtoint(char s[], int base)
{
int ans = 0;
for (int i = 0; s[i]; i++)
{
if (s[i] < '9')
ans = ans * base + s[i] - '0';
else
ans = ans * base + s[i] - 'A' +10;//A的十六进制是10
}
return ans;
}
10进制的整型 转成 base进制的字符串
//10进制的整型 转成 base进制的字符串
void intostring(int a, char s[], int base)
{
int g;
int i = 0;
while (a>0)
{
g = a%base;//取个位
if (g < 10)
s[i] = g + '0';
else
s[i] = g + 'A' - 10;
i++;
a = a /base;//扔个位
}
s[i] = 0;//让是s[i]结束
char* l; char* r;
l = s; r = s;
while (*++r);
r--;
while (l < r)
{
swap(*l, *r);//交换
l++;
r--;
}
}
测试函数
void textstringtoint()
{
char s[100] = "ABC";//10*16*16+11*16+12= 2748
int a = stringtoint(s, 16);
char d[100] = "123";//1*16*16+2*16+3=291
int b = stringtoint(d, 16);
char e[100] = "123";//1*10*10+2*10+3=123
int c = stringtoint(e, 10);
char f[100] = "1111011";//123
int g = stringtoint(f, 2);
cout << a << endl << b << endl << c << endl << g << endl << endl;
}
void textintostring()
{
int a =123;//1111011
char s[100];
intostring(a,s,2);
for (int i = 0; s[i]; i++)
cout << s[i];
cout << endl;
int b = 2748;//ABC
char k[100];
intostring(b, k, 16);
for (int i = 0; k[i]; i++)
cout << k[i];
}
主函数
int main()
{
textstringtoint();
textintostring();
}
显示结果
2748
291
123
123
1111011
ABC