首先10进制转成2,8,16进制,只要调用cout
记住
oct——8进制
dec——10进制
hex——16进制
这方法能转化最大范围是unsigned long long 即2的64次方
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<map>
map<char, int> mp;
#include<bitset>
int main()
{
unsigned long long n;
cin>>dec>>n;
bitset<8> bt(n);
cout<<"2进制"<<n<<endl;
cout<<"oct:"<<oct<<n<<endl;
cout<<"hex:"<<hex<<n<<endl;
}
同理当给出16进制——》2,8,10进制
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<map>
map<char, int> mp;
#include<bitset>
int main()
{
unsigned long long n;
cin>>hex>>n;
bitset<20> bt(n);
cout<<"2进制"<<bt<<endl;
cout<<"oct:"<<oct<<n<<endl;
cout<<"dec:"<<dec<<n<<endl;
}
因此只要给出2,8,10,16进制,我们都可以通过调用函数来进行转换,前提是数据范围合理。
eg
这种问题完全可以用上面方法,没超过范围。
但是hex输出是小写字母,需要加头文件#《iomanip》和setiosflags(ios::uppercase)
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<map>
map<char, int> mp;
#include<bitset>
#include<iomanip>
int main()
{
unsigned long long n;
cin>>dec>>n;
cout<<hex<<setiosflags(ios::uppercase)<<n;
}
这种题目数据范围是16的十万次方,不可能通过上面去完成,只能用字符串了。
这篇文章点赞过50,更新字符串的进制转换。