【C/C++】任意進制轉換


  進制轉換:R進制->10進制;10進制->R進制、

 1 #include<bits/stdc++.h> 
 2 using namespace std;
 3 /*函數:r進制轉換成10進制*/
 4 int rToTen(string n,int r){
 5     //將r進制轉為10進制,n是該r進制的字符串表示
 6     int len = n.length();
 7     int ans = 0;
 8     int i = 0;
 9     while(i<len){
10         ans*=r;
11         ans+=n[i]-'0';
12         i++;
13     }
14     return ans;
15 }
16 
17 /*函數:十進制轉任意進制*/ 
18 string tenToR(int n,int r){
19     //十進制n轉r進制 ,返回字符串s 
20     char str[1005];
21     stack<int>s;
22     while(n){
23         s.push(n%r);
24         n = n/r;
25     }
26     int i = 0;
27     while(!s.empty()){
28         switch(s.top()){
29             case 10:
30                 str[i++] = 'A';
31                 break; 
32             case 11:
33                 str[i++] = 'B';
34                 break;
35             case 12:
36                 str[i++] = 'C';
37                 break;
38             case 13:
39                 str[i++] = 'D';
40                 break;
41             case 14:
42                 str[i++] = 'E';
43                 break;
44             case 15:
45                 str[i++] = 'F';
46                 break;
47             default:
48                 str[i++] = s.top()+'0';    
49         }
50         s.pop();
51     }
52     string st = str;
53     return st;
54 }
55 
56 
57 int main(){
58     cout<<rToTen("10010",2)<<endl;
59     cout<<tenToR(18,2)<<endl;
60 } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM