如何将十六进制转换为十进制 [英] How to convert hexadecimal to decimal recursively

查看:73
本文介绍了如何将十六进制转换为十进制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I need to do this convertion but have no clue. Can someone help me? I need this to complete a calculator of base convertion. I also need that the function return a integer to convert to use in my others functions.

PS:对不起,我的英语不好.

PS: sorry for my bad english.

我希望11F为整数287.

i expect that 11F to be an integer 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 似乎更安全.

Btw, it seems to be more safe to use std::hex.

这篇关于如何将十六进制转换为十进制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆