如何将十六进制转换为十进制
问题描述:
我需要进行这种转换,但是没有任何线索.有人能帮我吗?我需要它来完成基本转换的计算器.我还需要该函数返回一个整数以转换为在其他函数中使用.
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
.