代码:
1.任意2 ~ 36进制数转换为10进制数
int r/*转换为十进制的进制*/, i = 0, ans = 0;
string n;//要转的数
cin >> r >> n;
//1.2~10进制
while(n.size() != i){
ans *= r;
ans += n[i];
i++;
}
cout << ans << endl;
//2~36进制
while(n.size() != i){
char ch = n[i];
if(ch >= '0' && ch <= '9') ans = ans * r + (t - '0');
else ans = ans * r - (t - 'a') + 10;
i++;
}
cout << ans << endl;
2.十进制转任意2 ~ 36进制
int n, r;
cin >> n >> r;
string ans = "";
do{
int t = n % r;
if(t >= 0 && t <= 9) ans += (t + '0');
else ans += (t - 10 + 'a');
n /= r;
}while(n != 0);//用do while的原因是防止n直接为0的情况
reverse(ans.begin(), ans.end());
cout << ans << endl;
技巧:
//1.C语言
#define prf printf
prf("%05o\n", 35);//将10进制的35转换成8进制数并输出,留5位,空着的补零
//同理
prf("%03d\n", 35);//10进制
prf("%05x\n", 35);//16进制
//2.C++语言
cout << "35的8进制:" << oct << 35<< endl;//8
cout << "35的10进制" << dec << 35 << endl;//10
cout << "35的16进制:" << hex << 35 << endl;//35
//C++字符串流
//1.将八,十六进制转十进制(string转int)
#include <iostream>
#include <sstream>
#include <cstring>
using namespace std;
int main(){
string s = "20";
int a;
stringstream ss;
ss << hex << s;//以16进制读入流中
ss >> a;//10进制int型输出
cout << a <<endl;
return 0;
}
//输出:32
//2.将十进制转八,十六进制(int转string)
#include <iostream>
#include <sstream>
#include <cstring>
using namespace std;
int main(){
string s1, s2;
int a = 30;
stringstream ss;
ss << oct << a;
ss >> s1;
cout << s1 << endl;//输出:36
ss.clear();
ss << hex << a;
ss >> s2;
cout << s2 << endl;//输出:1e
return 0;
}
拓展:
//1.atoi字符数组转数字, itoa不可使用(仅存在于Windows系统,linux系统没有此函数)
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int num = 10;
char str1[100] = "123456";
cout << str1 << endl;
cout << num << endl;
num = atoi(str1);
cout << num;
return 0;
}
/*输出:
123456
10
123456
*/
//2.用to_string 代替 itoa
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int num = 10;
cout << num << endl;
string s = to_string(num);
cout << s;
return 0;
}
/*
输出:
10
10
*/
//3.reverse的用法
reverse(str.begin(),str.end());//1.反转字符串
reverse(vector.begin(),vector.end());//2.反转向
reverse(a,a+strlen(a));//3.反转数组
//同理我们还可以反转很多东西
//例如二维向量,这里最后一列就变成了第一列
reverse(ans.begin(),ans.end());
标签:10,转换,进制,int,namespace,笔记,include,cout
From: https://www.cnblogs.com/Seaniangel/p/17090857.html