C++10进制转16进制

来源:互联网 发布:php服务器配置 编辑:程序博客网 时间:2024/06/05 11:50

方法一:

推荐 直接除以16进行计算 对结果递归进行转换运算

代码如下:

[cpp] view plain copy
print?
  1. #include<iostream>  
  2. #include <string>  
  3. using namespace std;  
  4.   
  5. string DecIntToHexStr(long long num)  
  6. {  
  7.     string str;  
  8.     long long Temp = num / 16;  
  9.     int left = num % 16;  
  10.     if (Temp > 0)  
  11.         str += DecIntToHexStr(Temp);  
  12.     if (left < 10)  
  13.         str += (left + '0');  
  14.     else  
  15.         str += ('A' + left - 10);  
  16.     return str;  
  17. }  
  18.   
  19. string DecStrToHexStr(string str)  
  20. {  
  21.     long long Dec = 0;  
  22.     for (int i = 0; i < str.size(); ++i)  
  23.         Dec = Dec * 10 + str[i] - '0';  
  24.     return DecIntToHexStr(Dec);  
  25. }  
  26. int main()  
  27. {  
  28.     string DecStr;  
  29.     while (cin >> DecStr)  
  30.     {  
  31.         cout << "0x" + DecStrToHexStr(DecStr);  
  32.     }  
  33.     return 0;  
  34. }  

方法二:先十进制转为二进制,然后再每四位进行合并转为16进制

代码如下:

[cpp] view plain copy
print?
  1. #include<iostream>  
  2. #include <string>  
  3. #include<vector>  
  4. #include <sstream>  
  5. #include <math.h>  
  6. using namespace std;  
  7.   
  8. int main()  
  9. {  
  10.     string decStr;  
  11.     cin >> decStr;  
  12.     int num = stoi(decStr);  
  13.     vector<int>v;  
  14.     while (num)  
  15.     {  
  16.         int bit = num % 2;  
  17.         v.push_back(bit);  
  18.         num = num / 2;  
  19.     }  
  20.     reverse(v.begin(), v.end());  
  21.     string hexStr;  
  22.     if (v.size() % 4 == 0)  
  23.     {  
  24.         for (int i = 0; i < v.size() / 4; ++i)  
  25.         {  
  26.             int temp = 0, k = 3;  
  27.             for (int j = i * 4; j < (i + 1) * 4; ++j)  
  28.             {  
  29.                 if (v[j] == 1)  
  30.                     temp += pow(2, k);  
  31.                 --k;  
  32.             }  
  33.             if (temp <= 9)  
  34.                 hexStr += temp;  
  35.             else  
  36.                 hexStr += ('A' + temp - 10);  
  37.         }  
  38.     }  
  39.     else  
  40.     {  
  41.         int zeroNum = 4 - v.size() % 4;  
  42.         for (int i = 0; i < zeroNum; ++i)  
  43.             v.insert(v.begin(), 0);  
  44.         for (int i = 0; i < v.size() / 4; ++i)  
  45.         {  
  46.             int temp = 0, k = 3;  
  47.             for (int j = i * 4; j < (i + 1) * 4; ++j)  
  48.             {  
  49.                 if (v[j] == 1)  
  50.                     temp += pow(2, k);  
  51.                 --k;  
  52.             }  
  53.             if (temp <= 9)  
  54.             {  
  55.                 stringstream ss;  
  56.                 string strTemp;  
  57.                 ss << temp;  
  58.                 ss >> strTemp;  
  59.                 hexStr += strTemp;  
  60.             }  
  61.             else  
  62.                 hexStr += ('A' + temp - 10);  
  63.         }  
  64.     }  
  65.     cout << hexStr << endl;  
  66.     return 0;  
  67. }  



原创粉丝点击