Ad Code

Responsive Advertisement

10473 - Simple Base Conversion

Author: Ismail Hosen

Daffodil International University





Problem Link



//Please follow from Main Function



#include<bits/stdc++.h>



using namespace std;



void destohex(int s){

    int b=16, i=0;

    string des;

    while(s!=0){

        int m=s%b;

         if(m < 10)

        {

            des[i] = m + 48;

            i++;

        }

        else

        {

            des[i] = m + 55;

            i++;

        }

        s/=b;

    }

    des[i]='\0';

    for(int j=i-1; j>=0; j--) cout<<des[j];

}



int hexToDec(string s)

{

    int len = s.size();

    int b = 1;

    int dec_val = 0;

    for (int i=len-1; i>=0; i--)

    {

        if (s[i]>='0' && s[i]<='9')

        {

            dec_val += (s[i] - 48)*b;

            b = b * 16;

        }

        else if (s[i]>='A' && s[i]<='F')

        {

            dec_val += (s[i] - 55)*b;

            b = b*16;

        }

    }



    return dec_val;

}



int main()

{

    string s;

    while(1){

        cin>>s;

        if(s[0]=='-') break;

        if(s[1]=='x' && s[0]=='0'){

            cout<<hexToDec(s)<<endl;

        }

        else{

            int m=0;

            for(int i=0; i<s.size(); i++){

                m=m*10;

                m+=s[i]-48;

            }

            cout<<"0x";

            destohex(m);

            cout<<endl;

        }

    }

    return 0;

}




Post a Comment

0 Comments