一个10进制和36进制相互转换的练习(C++)
1 #include <iostream>
2 #include <cstring>
3 #include <cmath>
4 using namespace std;
5
6 string ts_trans(int num) {
7 string a = "0123456789abcdefghijklmnopqrstuvwxyz";
8 string res = "";
9 if (num == 0) {
10 return "0";
11 }
12 while(num > 0) {
13 res = a[num % 36] + res;
14 num = num / 36;
15 }
16 return res;
17 }
18
19 int ts_trans2(string res) {
20 string a = "0123456789abcdefghijklmnopqrstuvwxyz";
21 int size = res.size(); // string求长度
22 int num = 0;
23 for (int i = 0;i < size;i++) {
24 num = a.find(res[i]) * pow(36, size - i - 1) + num; // pow:求幂
25 }
26 return num;
27 }
28 int main() {
29 /*
30 int num = 0;
31 while(1) {
32 cin >> num;
33 string res = ts_trans(num);
34 cout << res << endl;
35 }
36 */
37 string res = "";
38 while(1) {
39 cin >> res;
40 int num = ts_trans2(res);
41 cout << num << endl;
42 }
43 return 0;
44 }