十进制到二进制、八进制、十六进制的转换
十进制到二进制、八进制、十六进制的转换
#include <iostream>
#include <vector>
using namespace std;
int main()
{
cout << "输入要转换的数字:" << endl;
long n = 0;
cin >> n;
cout << "输入要转换的进制:" << endl;
int p = 0;
cin >> p;
vector<int>arr; //将余数按顺序存入数组arr中
int c = 0;
while (n != 0)
{
c = n % p;
n = n / p;
arr.push_back(c);
}
cout << "10进制转换为 " << p << " 进制的结果为:" << endl;
for (int i = arr.size() - 1; i >= 0; i--)//输出转换后的序列
{
if (arr[i] >= 10) //若为十六进制等则输出相对应的字母
cout << (char)(arr[i] + 55);
else //否则直接输出数字
cout << arr[i];
}
cout << endl;
return 0;
}
二进制、八进制、十六进制到十进制的转换
#include<iostream>
#include<string>
using namespace std;
int main() {
cout << "输入要转换的数字:" << endl;
string s;
cin >> s;
cout << "输入当前进制:" << endl;
int p = 0;
cin >> p;
int bit = 0;
int ans = 0;
for (int i = s.size(); i >= 0; --i)
{
if (s[i] >= '0'&&s[i] <= '9')
{
ans += (s[i] - '0')*pow(p, bit++);//0-9
}
else if (s[i] >= 'A'&&s[i] <= 'F')
{
ans += (s[i] - 'A' + 10)*pow(p, bit++);//A-F
}
}
cout << "输出10进制字符串: " << endl;
cout << ans << endl;
return 0;
}