C++进制转换(十进制转二进制、八进制、随意进制)
十进制转二进制:
//十进制转二进制 #include<iostream> using namespace std; void printbinary(const unsigned int val) { for(int i = 16; i >= 0; i--) { if(val & (1 << i)) cout << "1"; else cout << "0"; } } int main() { printbinary(1024); return 0; }
十进制转八进制
//十进制转八进制 #include <iostream> #include <vector> using namespace std; int main() { cout<<"input a number:"<<endl; int d; vector<int> vec; cin>>d; while (d) { vec.push_back(d%8); d=d/8; } cout<<"the result is:"<<endl; for(vector<int>::iterator ip=vec.end()-1;ip>=vec.begin();) { cout<<*ip--; } cout<<endl; return 0; }
十进制转随意进制:
//十进制转换为随意进制的源代码 #include <iostream> using namespace std; int main() { long n; int p,c,m=0,s[100]; cout<<"输入要转换的数字:"<<endl; cin>>n; cout<<"输入要转换的进制:"<<endl; cin>>p; cout<<"("<<n<<")10="<<"("; while (n!=0)//数制转换,结果存入数组s[m] { c=n%p; n=n/p; m++;s[m]=c; //将余数按顺序存入数组s[m]中 } for(int k=m;k>=1;k--)//输出转换后的序列 { if(s[k]>=10) //若为十六进制等则输出相相应的字母 cout<<(char)(s[k]+55); else //否则直接输出数字 cout<<s[k]; } cout<<")"<<p<<endl; return 0; }
通过库函数实现八进制、十六进制输出:
#include <iostream> using namespace std; int main() { int test=64; cout<<"DEC:"<<test<<endl; cout<<"OCT:"<<oct<<test<<endl;//八进制 cout<<"HEX:"<<hex<<test<<endl;//十六进制 return 0; }