1. 程式人生 > >其他進位制轉化為10進位制和10進位制轉化為其他進位制(均一個函式)c++

其他進位制轉化為10進位制和10進位制轉化為其他進位制(均一個函式)c++

今天專門抽出來一點時間來弄一下,進位制轉化的問題,不論是其他進位制轉化為10進位制還是10進位制轉化為其他進位制,均使用同一個函式來完成,只需要手動輸入從哪個進位制轉化為哪個進位制。

程式碼如下:

#include <iostream>
#include <cmath>
#include <cctype>
using namespace std;
void TenToOther(int n1,int n2)
{
    int n,s[100]={0},i=0;
    string s2="0123456789ABCDEF";  //將s和s2對應起來,方便輸出字母
cin>>n; while(n!=0){ s[i++]=n%n2; n/=n2; } for(int j=i-1;j>=0;j--) if(j==0&&s[j]==0) continue; else cout<<s2[s[j]]; } void OtherToTen(int n1,int n2) { string s; cin>>s; int sum=0,k=s.size()-1; for(int i=0;i<s.size
();i++,k--) if(isdigit(s[i]))sum+=int(s[i]-'0')*pow(n1,k); else sum+=int(s[i]-'A'+10)*pow(n1,k); cout<<sum<<endl; } int main() { int n1,n2,n; cout<<"n1---->n2"<<endl; cin>>n1>>n2; if(n1==10) TenToOther(n1,n2); else if(n2==10)
OtherToTen(n1,n2); return 0; }

來總結一下:
1)十進位制轉化為其他進位制時,為了避免餘數超過10,所以對於輸出的資料還是需要用s2來轉化一下。
2)其他進位制轉化為十進位制,因為其他進制中還有字母所以需要用一個string 類來儲存輸入的資料,最後在輸入的時候,還需要判斷一下這個string類中儲存的是數字還是字母,再進行相應的轉化。