[英]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.