繁体   English   中英

如何将十六进制转换为十进制[关闭]

[英]How to convert hexadecimal to decimal recursively [closed]

我需要进行这种转换,但是没有任何线索。 有人能帮我吗? 我需要它来完成基本转换的计算器。 我还需要该函数返回一个整数以转换为在其他函数中使用。

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("%lu\n", ul);
}

暂无
暂无

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

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