c++ - 如何在 C++ 中递归地将十六进制转换为十进制?
问题描述
*注意:这里有一个类似的问题,但它对我没有帮助,因为我的朋友直接将它复制粘贴到她的代码上,我不想这样做(加上它对我个人来说毫无意义,所以如果我不遵循用于它的方法,为什么我会首先参考它)。我本质上需要一些关于 LOGIC 的帮助,甚至不完全是逐行写出的代码。
我已经有一个将我的 char 转换为十进制的函数:
void CharToDec(char hexVal)
{
if(hexVal >= '0' && hexVal <= '9')
hexVal = hexVal - '0';
else
{
hexVal = hexVal - 'A' + 10;
}
}
不确定这些台词是否正确,但这是我从教授那里得到的。我需要使用递归从十六进制进行十进制转换。没有例外。谁能给我一个伪代码或假人逻辑流?我不聪明,也根本不懂递归。教授略读了一下,真诚地听起来对帮助我们处理这个问题一点兴趣都没有。另外,我们没有教科书。而且由于整个学校因大流行而关闭,我很难与他联系。
我的基本开关代码必须是一个不同的递归函数。我使用这段代码只是为了将字符转换为十六进制链中的小数。
示例输出:
输入十六进制值: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
推荐阅读
- javascript - create-react-app 导入函数返回未定义
- angular6 - 如何使用角度 6 更改数组的索引?
- javascript - 文本区域,删除最后一段
- bash - GitHub Actions:从工件中读取并分配给变量?
- reactjs - Zoom web SDK 卡在“加入会议”上
- excel - 复制/粘贴范围(单元格(
- python - 构建 yocto dunfell 时 random.py 中的非法指令
- android - Android 和 ios 的屏幕录制
- javascript - EPSON T20iii ePOS JavaScript SDK 超时问题(可能是 SSL 问题)
- javascript - 将对象推入数组但进行api调用时对象显示为空