C++ implementation of Any Base to Any Base Conversion.
#include <cstdio> #include <vector> #include <iostream> #include <string> #include <algorithm> using namespace std; #define all(x) x.begin(),x.end() template<class t> inline t power(t num,t p) { if(!p) return 1;return (num*power(num,p-1)); } bool islow(char ch){if(ch>='a' && ch<='z') return true; return false;} bool isupp(char ch){if(ch>='A' && ch<='Z') return true; return false;} bool isdig(char ch){if(ch>='0' && ch<='9') return true; return false;} //any base to decimal conversion int todec(string s,int base) { int i,j,temp,len,sum=0; len=s.length()-1; for(i=0,j=len;i<=len;i++,j--) { char ch=s.at(i); if(isdig(ch)) temp=ch-'0'; else if(islow(ch)) temp=10+ch-'a'; else if(isupp(ch)) temp=10+ch-'A'; sum+=(temp*(power(base,j))); } return sum; } //decimal to any base conversion string tobase(int num,int base) { int temp; string s; char ch; if(!num) return "0"; //special '0' case handling while(num>0) { temp=num%base; num/=base; if(temp<=9) s+=(temp+'0'); else s+=((temp-10)+'A'); } reverse(all(s)); return s; }
No comments:
Post a Comment