繁体   English   中英

如何在C++中递归地从十六进制转换为十进制?

[英]How to convert from Hexadecimal to Decimal in C++ Recursively?

*注意:这里有一个类似的问题,但它对我没有帮助,因为我的朋友直接将其复制粘贴到她的代码上,而我不想这样做(而且它对我个人来说是零意义的,所以如果我不遵循用于它的方法,我为什么要首先提及它)。 我本质上需要一些逻辑方面的帮助,甚至不完全是逐行写出的代码。

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

    void CharToDec(char hexVal)

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

       hexVal = hexVal - '0';

     else

    {

      hexVal = hexVal - 'A' + 10;

    } 

   }

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

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

示例输出:

输入十六进制值:7F

十进制值:127

像这样。

谢谢你。

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

#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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM