当前位置:   article > 正文

C++十六进制转十进制_c++ 16进制转10进制

c++ 16进制转10进制

一、题目信息

内存限制:512.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

二、问题分析

将十六进制数按权展开累加即可

三、具体执行

用string类型存放十六进制数,用for循环和switch_case_default语句进行赋值运算

四、完整代码如下

  1. #include <iostream>
  2. #include <string>
  3. #include <cmath>
  4. using namespace std;
  5. int main()
  6. {
  7. long long p = 0;
  8. string s;
  9. cin >> s;
  10. for (unsigned i = 0; i < s.length(); i++)
  11. {
  12. switch(s[i])
  13. {
  14. case '0': p += 0 * pow(16,s.length()-i-1); break;
  15. case '1': p += 1 * pow(16,s.length()-i-1); break;
  16. case '2': p += 2 * pow(16,s.length()-i-1); break;
  17. case '3': p += 3 * pow(16,s.length()-i-1); break;
  18. case '4': p += 4 * pow(16,s.length()-i-1); break;
  19. case '5': p += 5 * pow(16,s.length()-i-1); break;
  20. case '6': p += 6 * pow(16,s.length()-i-1); break;
  21. case '7': p += 7 * pow(16,s.length()-i-1); break;
  22. case '8': p += 8 * pow(16,s.length()-i-1); break;
  23. case '9': p += 9 * pow(16,s.length()-i-1); break;
  24. case 'A': p += 10 * pow(16,s.length()-i-1); break;
  25. case 'B': p += 11 * pow(16,s.length()-i-1); break;
  26. case 'C': p += 12 * pow(16,s.length()-i-1); break;
  27. case 'D': p += 13 * pow(16,s.length()-i-1); break;
  28. case 'E': p += 14 * pow(16,s.length()-i-1); break;
  29. case 'F': p += 15 * pow(16,s.length()-i-1); break;
  30. default: break;
  31. }
  32. }
  33. cout << p;
  34. return 0;
  35. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/244586
推荐阅读
相关标签
  

闽ICP备14008679号