Advertisement
KeeganT

Binary, Dec & Hex Converter

Sep 12th, 2018
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <sstream>
  4. #include <math.h>
  5. #include <cmath>
  6. #include <algorithm>
  7.  
  8. using namespace std;
  9.  
  10. string d2b(int num)
  11. {
  12.     int num2=1,num3=num,place=0;
  13.     while(num2<=num)
  14.     {
  15.         num2*=2;
  16.         place++;
  17.     }
  18.     num2/=2;
  19.     string result="";
  20.     for(int c=0;c<place;c++)
  21.     {
  22.         num3-=num2;
  23.         if(num3>-1)result+='1';
  24.         else if(num3<=-1)
  25.         {
  26.             result+='0';
  27.             num3+=num2;
  28.         }
  29.         num2/=2;
  30.     }
  31.     return result;
  32. }
  33.  
  34. int b2d(int num)
  35. {
  36.     stringstream convert;
  37.     convert<<num;
  38.     string numStr=convert.str();
  39.     int len=numStr.length()-1;
  40.     int num2=pow(2,len);
  41.     int result=0;
  42.     for(int c=0;c<len+1;c++)
  43.     {
  44.         if(numStr[c]=='1')result+=num2;
  45.         num2/=2;
  46.     }
  47.     return result;
  48. }
  49.  
  50. string d2h(float num)
  51. {
  52.     string letters="ABCDEF", result;
  53.     while(num!=0)
  54.     {
  55.         num/=16;
  56.         stringstream convert;
  57.         convert<<num;
  58.         string numStr=convert.str();
  59.         string remainderStr=numStr.substr(numStr.find('.')+1,numStr.length()-2);
  60.         remainderStr="0."+remainderStr;
  61.         stringstream convert2(remainderStr);
  62.         float remainder;
  63.         convert2>>remainder;
  64.         int mult=remainder*16;
  65.         bool number=false;
  66.         for(int c=0;c<10;c++)if(mult==c)
  67.         {
  68.             stringstream convert3;
  69.             convert3<<mult;
  70.             result+=convert3.str();
  71.             number=true;
  72.         }
  73.         if(number==false)for(int c=10;c<16;c++)if(mult==c)result+=(letters[c-10]);
  74.         num=floor(num);
  75.     }
  76.     reverse(result.begin(),result.end());
  77.     return result;
  78. }
  79.  
  80. int h2d(string num)
  81. {
  82.     string letters="ABCDEF";
  83.     stringstream convert;
  84.     convert<<num;
  85.     string numStr=convert.str();
  86.     int len=numStr.length();
  87.     int mult=1;
  88.     int result=0;
  89.     for(int c=0;c<len-1;c++)mult*=16;
  90.     for(int c=0;c<len;c++)
  91.     {
  92.         bool number=false;
  93.         int temp, temp2;
  94.         for(int x=49;x<58;x++)if(num[c]==x)
  95.         {
  96.             temp=(x-48);
  97.             number=true;
  98.         }
  99.         if(number==false)for(int x=0;x<6;x++)if(num[c]==letters[x])temp2=(int)letters[x]-55;
  100.         if(number==true)
  101.         {
  102.             temp*=mult;
  103.             result+=temp;
  104.         }
  105.         if(number==false)
  106.         {
  107.             temp2*=mult;
  108.             result+=temp2;
  109.         }
  110.         mult/=16;
  111.     }
  112.     return result;
  113. }
  114.  
  115. int main()
  116. {
  117.     int num, choice=0;
  118.     string numStr;
  119.     float numFlt;
  120.     while(choice<1||choice>4)
  121.     {
  122.         cout<<"1) Convert Decimal to Binary"<<endl;
  123.         cout<<"2) Convert Binary to Decimal"<<endl;
  124.         cout<<"3) Convert Decimal to Hexadecimal"<<endl;
  125.         cout<<"4) Convert Hexadecimal to Decimal"<<endl;
  126.         cin>>choice;
  127.         if(choice==1)
  128.         {
  129.             cout<<"Number: ";
  130.             cin>>num;
  131.             cout<<num<<" in binary is: "<<d2b(num);
  132.         }
  133.         else if(choice==2)
  134.         {
  135.             cout<<"Number: ";
  136.             cin>>num;
  137.             cout<<num<<" in decimal is: "<<b2d(num);
  138.         }
  139.         else if(choice==3)
  140.         {
  141.             cout<<"Number: ";
  142.             cin>>numFlt;
  143.             cout<<numFlt<<" in hexadecimal is: "<<d2h(numFlt);
  144.         }
  145.         else if(choice==4)
  146.         {
  147.             cout<<"Number: ";
  148.             cin>>numStr;
  149.             cout<<numStr<<" in decimal is: "<<h2d(numStr);
  150.         }
  151.         else
  152.         {
  153.             cout<<"Invalid choice!";
  154.             Sleep(2000);
  155.             system("cls");
  156.         }
  157.     }
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement