【问题标题】:How to convert from Hexadecimal to Decimal in C++ Recursively?如何在 C++ 中递归地将十六进制转换为十进制?
【发布时间】:2020-07-04 15:51:40
【问题描述】:

*注意:这里有一个类似的问题,但它对我没有帮助,因为我的朋友直接将它复制粘贴到她的代码上,我不想这样做(加上它以零的方式对任何意义就我个人而言,如果我不遵循用于它的方法,为什么我会首先参考它)。我本质上需要一些关于 LOGIC 的帮助,甚至不完全是逐行写出的代码。

我已经有一个将我的 char 转换为十进制的函数:

    void CharToDec(char hexVal)

   { 
     if(hexVal >= '0' && hexVal <= '9')

       hexVal = hexVal - '0';

     else

    {

      hexVal = hexVal - 'A' + 10;

    } 

   }

不确定这些台词是否正确,但这是我从教授那里得到的。我需要使用递归从十六进制进行十进制转换。没有例外。谁能给我一个伪代码或假人逻辑流?我不聪明,也根本不懂递归。教授略读了一下,真诚地听起来对帮助我们处理这个问题一点兴趣都没有。另外,我们没有教科书。而且由于整个学校因大流行而关闭,我很难与他联系。

我的基本开关代码必须是一个不同的递归函数。我使用这段代码只是为了将字符转换为十六进制链中的小数。

示例输出:

输入十六进制值:7F

十进制值:127

像这样。

谢谢。

【问题讨论】:

标签: c++ recursion


【解决方案1】:

请看下面的代码。 只添加了一个最小版本。您可以根据您的要求自定义此代码

#include <iostream>

#include <string.h>

using namespace std;

void CharToDec(char hexVal[]) {
  int len = strlen(hexVal);

  // Initializing base value to 1, i.e 16^0 
  int base = 1;

  int dec_val = 0;

  // Extracting characters as digits from last character 
  for (int i = len - 1; i >= 0; i--) {
    // if character lies in '0'-'9', converting  
    // it to integral 0-9 by subtracting 48 from 
    // ASCII value. 
    if (hexVal[i] >= '0' && hexVal[i] <= '9') {
      dec_val += (hexVal[i] - 48) * base;

      // incrementing base by power 
      base = base * 16;
    }

    // if character lies in 'A'-'F' , converting  
    // it to integral 10 - 15 by subtracting 55  
    // from ASCII value 
    else if (hexVal[i] >= 'A' && hexVal[i] <= 'F') {
      dec_val += (hexVal[i] - 55) * base;
      // incrementing base by power 
      base = base * 16;
    }
  }
  cout << "Decimal value=" << dec_val << endl;
}

int main() {
  CharToDec("7F");
  return 0;
}

输出将是

Decimal value=127

【讨论】:

  • 递归是帖子标题的要求。
  • 老兄,我只想非递归地执行此操作,但我必须使用递归。老实说,如果没有递归,我会非常容易做到这一点。但是我很难跟随递归,尤其是因为我患有多动症并且无法真正完成任何事情。更少的递归逻辑。
猜你喜欢
  • 1970-01-01
  • 2019-11-07
  • 2017-07-31
  • 2013-07-20
  • 2012-06-17
  • 2023-03-31
  • 2021-06-26
  • 2014-04-18
  • 1970-01-01
相关资源
最近更新 更多