进制转化

#include <iostream>
#include <vector>

using namespace std;

int p = -1;

int ConversionFunc(string str, int system) {
int k = str.size(), ncon = 0;
for (int i = k - 1; i >= 0; --i) {
if (str[i] >= 48 && str[i] <= 57) {
ncon += static_cast<int>((str[i] - 48) * pow(system, k - i - 1));
}
else {
ncon += static_cast<int>((str[i] - 55) * pow(system, k - i - 1));
}
}

return ncon;
}

void push(vector<int> &vec, int n) {
vec.push_back(n);
++p;
}

void pop(vector<int> vec) {
if (p == -1 || vec.empty()) {
cout << endl;
return;
}
if (vec[p] < 10)
cout << vec[p];
else
cout << static_cast<char>(vec[p] + 55);

--p;
}

int main()
{
string str;
vector<int> vec;
int sys1, sys2, sum = 0;
cin >> sys1;
cin >> str;
sum = ConversionFunc(str, sys1);
cin >> sys2;
while (sum / sys2) {
push(vec, sum % sys2);
sum /= sys2;
}
push(vec, sum);
cout << sys2 << endl;
while(p != -1)
pop(vec);
cout << endl;
system("PAUSE");
return 0;
}

posted @ 2022-07-15 16:29  刘炳源  阅读(59)  评论(0)    收藏  举报