当前位置:   article > 正文

蓝桥杯-十六进制转十进制_输入一个正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的

输入一个正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的
                                                        十六进制转十进制
问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535

思路:十六进制转换为二进制,二进制计算十进制;
进坑点: 疑问忽略十六进制转换成二进制时的顺序:十六进制->二进制:(顺序)   二进制->十进制:(逆序)
            疑问忘记“正整数"关键词,FFFFFFFF为负值,所以数据类型是:unsigned long long
            疑问乘法方法,pow(2,n);
  1. #include<iostream>
  2. #include<cstring>
  3. #include<string>
  4. #include<cmath>
  5. #include<algorithm>
  6. using namespace std;
  7. const int Max=500005;
  8. int arr[Max];
  9. char str[55];
  10. char str1[505],str2[505];
  11. int main()
  12. {
  13. cin>>str;
  14. int len=strlen(str);
  15. int len1=0,len2=0;
  16. for(int i=0;i<len;i++){
  17. if(str[i]=='0'){
  18. str1[len1++]='0';
  19. str1[len1++]='0';
  20. str1[len1++]='0';
  21. str1[len1++]='0';
  22. }else if(str[i]=='1'){
  23. str1[len1++]='0';
  24. str1[len1++]='0';
  25. str1[len1++]='0';
  26. str1[len1++]='1';
  27. }else if(str[i]=='2'){
  28. str1[len1++]='0';
  29. str1[len1++]='0';
  30. str1[len1++]='0';
  31. str1[len1++]='1';
  32. }else if(str[i]=='3'){
  33. str1[len1++]='0';
  34. str1[len1++]='0';
  35. str1[len1++]='1';
  36. str1[len1++]='0';
  37. }else if(str[i]=='4'){
  38. str1[len1++]='0';
  39. str1[len1++]='1';
  40. str1[len1++]='0';
  41. str1[len1++]='0';
  42. }else if(str[i]=='5'){
  43. str1[len1++]='0';
  44. str1[len1++]='1';
  45. str1[len1++]='0';
  46. str1[len1++]='1';
  47. }else if(str[i]=='6'){
  48. str1[len1++]='0';
  49. str1[len1++]='1';
  50. str1[len1++]='1';
  51. str1[len1++]='0';
  52. }else if(str[i]=='7'){
  53. str1[len1++]='0';
  54. str1[len1++]='1';
  55. str1[len1++]='1';
  56. str1[len1++]='1';
  57. }else if(str[i]=='8'){
  58. str1[len1++]='1';
  59. str1[len1++]='0';
  60. str1[len1++]='0';
  61. str1[len1++]='0';
  62. }else if(str[i]=='9'){
  63. str1[len1++]='1';
  64. str1[len1++]='0';
  65. str1[len1++]='0';
  66. str1[len1++]='1';
  67. }else if(str[i]=='A'){
  68. str1[len1++]='1';
  69. str1[len1++]='0';
  70. str1[len1++]='1';
  71. str1[len1++]='0';
  72. }else if(str[i]=='B'){
  73. str1[len1++]='1';
  74. str1[len1++]='0';
  75. str1[len1++]='1';
  76. str1[len1++]='1';
  77. }else if(str[i]=='C'){
  78. str1[len1++]='1';
  79. str1[len1++]='1';
  80. str1[len1++]='0';
  81. str1[len1++]='0';
  82. }else if(str[i]=='D'){
  83. str1[len1++]='1';
  84. str1[len1++]='1';
  85. str1[len1++]='0';
  86. str1[len1++]='1';
  87. }else if(str[i]=='E'){
  88. str1[len1++]='1';
  89. str1[len1++]='1';
  90. str1[len1++]='1';
  91. str1[len1++]='0';
  92. }else if(str[i]=='F'){
  93. str1[len1++]='1';
  94. str1[len1++]='1';
  95. str1[len1++]='1';
  96. str1[len1++]='1';
  97. }
  98. }//得到二进制
  99. //cout<<str1<<endl;
  100. unsigned long long sum=0;
  101. for(int i=len1-1;i>=0;i--){
  102. if(str1[i]=='1'){
  103. // cout<<pow(2,(len1-1)-i)<<" ";
  104. sum+=pow(2,(len1-1)-i);
  105. }
  106. }
  107. cout<<sum<<endl;
  108. return 0;
  109. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/226666
推荐阅读
相关标签
  

闽ICP备14008679号