#include <iostream>
#include <string.h>4
#include <cstdio>
using namespace std;
int main()
{
int result[20] = {0};
int M, N, length, i;
long long num = 0;
char str[20];
cout << "The conversion is base-M to base-N, so please input M and N:" << endl;
cin >> M >> N;
cout << "Please input a positive base-" << M << " number:" << endl;
cin >> str;
cout << "The base-" << N << " result:" << endl;
length = strlen(str);
for (i = 0; i < length; i++)
{
str[i] = (((str[i] >= '0') & (str[i] <= '9')) ? (str[i] - '0'):
(((str[i] >= 'a') & (str[i] <= 'z')) ? (str[i] - 'a' + 10) :
(((str[i] >= 'A') & (str[i] <= 'Z')) ? (str[i] - 'A' + 10) : 0)));
num *= M;
num += str[i];
}
i = 0;
while (num)
{
result[i++] = num % N;
num /= N;
}
for (i--; i >= 0; i--)
cout << (char)((result[i] < 10) ? result[i] + '0' : (char)(result[i] - 10 + 'A'));
cout<<endl;
getchar();
getchar();
}
#include<bits/stdc++.h>
using namespace std;
/*函数:r进制转换成10进制*/
long long Conversion(char str[], int m)
{
long long ans = 0;
for (int i = 0; str[i]; i++)
{
if (str[i] >= '0' && str[i] <= '9')
ans = ans * m + str[i] - '0';
else ans = ans * m + str[i] - 'A' + 10;
}
return ans;
}
/*函数:十进制转任意进制*/
string tenToR(int n,int r){
//十进制n转r进制 ,返回字符串s
char str[1005];
stack<int>s;
while(n){
s.push(n%r);
n = n/r;
}
int i = 0;
while(!s.empty()){
switch(s.top()){
case 10:
str[i++] = 'A';
break;
case 11:
str[i++] = 'B';
break;
case 12:
str[i++] = 'C';
break;
case 13:
str[i++] = 'D';
break;
case 14:
str[i++] = 'E';
break;
case 15:
str[i++] = 'F';
break;
default:
str[i++] = s.top()+'0';
}
s.pop();
}
string st = str;
return st;
}
int main(){
cout<<Conversion("10010",2)<<endl;
cout<<tenToR(18,2)<<endl;
}