如何将十六进制转换为十进制
How to convert hexadecimal to decimal recursively
我需要进行此转换,但没有线索。有人能帮我吗?我需要这以完成基本转换的计算器。我还需要函数返回一个整数以转换为我的其他功能。
ps:对不起,我的英语不好。
我希望11F成为整数287。
这是递归的东西:
int hexToBase10(const std::string& number, size_t pos = 0) {
if (pos == number.length())
return 0;
char digit = number[number.size() - pos - 1];
int add = digit >= '0' && digit <= '9' ? digit - '0'
: digit - 'A' + 10;
return 16 * hexToBase10(number, pos + 1) + add;
}
这样称呼:
hexToBase10("11F"); // 287
顺便说一句,使用std::hex
似乎更安全。
提供最多适合unsigned long long
,您可以使用stdlib.h的 strtoul
/ strtoull
将其从base-16字符串分解为整数。
然后,您可以简单地将该整数打印在基础10中。
#include <stdlib.h>
#include <stdio.h>
int main()
{
char const *hex = "11F";
char *endptr;
unsigned long ul = strtoul(hex,&endptr,16);
printf("%lun", ul);
}
相关文章:
- C++:二进制到十进制w/转换过程的外观
- 十六进制到十进制转换的未清理答案
- 如何在C++中将二进制编码十进制转换为 int
- 以正确的顺序从十进制转换为二进制
- Arduino 十六进制到十进制转换
- 使用指数将十进制转换为二进制
- 从十进制转换为 BCD
- 使用堆栈将字符串格式的十进制转换为双精度
- 混乱将十进制转换为C 中的十六进制
- 使用位操作员将十进制转换为八十位
- 将长 64 位十进制转换为二进制
- 将十进制转换为十六进制,找不到我的逻辑错误
- 试图制作一个将十进制转换为二进制和ASCII C++的表
- 将字符串中的十进制转换为二进制时出错
- 用正确的位大小在c++中将十进制转换为二进制
- 在编译时将十进制转换为十六进制
- 为什么将十进制转换为二进制的递归方法比迭代、使用和返回字符串更快
- 将十进制转换为 32 位二进制
- 以最佳方式将十进制转换为二进制
- 使用分而治之的二进制到十进制转换