1386: 进制转换
输入一个十进制数N,将它转换成R进制数输出。
#include <bits/stdc++.h> using namespace std; //下标为0的是0,下标为10的是A string s="0123456789ABCDEF"; int main() { int n,r; while(cin>>n>>r) { string c; //是0,直接输出 if(!n)cout<<"0 "; else { //小于0输出符号,取相反数 if(n<0)cout<<"-",n=-n; //n还有数可取就执行循环 while(n) { //n%r为当前位(也就是变量n的最后一位),找到当前位的字符,并加到答案c上 c+=s[n%r]; //当前位已经拿到丢弃 n/=r; } //由于我们从最后一位到了第一位,最后需要倒过来 reverse(c.begin(),c.end()); cout<<c<<" "; } } return 0; }
二进制字符串转10进制
#include <bits/stdc++.h> using namespace std; int main() { string s; //读入要进行转换的字符串s cin>>s; //设置变量t去保存这个答案 int t=0; for(int i=0;s[i];i++) { t=t*2+(s[i]-'0'); } cout<<t<<" "; }
给定变量int转换为string
string intToString(int x) { if(x==0)return "0"; string s; while(x) { s+=x%10+'0'; x/=10; } reverse(s.begin(),s.end()); return s; }
如果n不能直接读入,而是一个大数呢