十进制转换为其他进制有一个基本公式:N = (N div d)*d + N mod d(其中:div 是整除,mod 为求余,N 是十进制数,d 是要目标进制)。
例如:(1348)10 = (2504)8,运算过程如下:
N | N div 8 | N mod 8 |
1348 | 168 | 4 |
168 | 21 | 0 |
21 | 2 | 5 |
2 | 0 | 2 |
余数的逆序就是转换的结果。
十进制转换为八进制代码如下:
#include <iostream>
#include <string>
#include <stack>
using std::cin;
using std::endl;
using std::cout;
using std::string;
using std::stack;
//十进制转换为 8 进制
void conversionDtoO(int n)
{
stack<int> result;
while (n)
{
result.push(n%8); //余数入栈
n = n / 8;
}
while (!result.empty())
{
cout << result.top();
result.pop();
}
cout << endl;
}
int main()
{
int s;
while (cin>>s)
{
conversionDtoO(s);
}
return 0;
}
十进制转换为十六进制同样的道理,将 8 换为 16 即可。