c ++ 16进制转换十进制
时间: 2024-11-23 11:38:32 浏览: 10
在C++中,可以使用标准库中的`std::stoi`函数直接将十六进制字符串转换为十进制,但这仅适用于无前导零的情况。如果你需要处理带前导零的十六进制数,可以自定义函数,例如通过遍历每一位并转换成对应的十进制值。下面是一个手动实现的例子:
```cpp
#include <string>
int hexadecimalToDecimal(const std::string& hexStr) {
int decimal = 0;
for (size_t i = 0; i < hexStr.length(); i++) {
char c = hexStr[i];
if (c >= '0' && c <= '9')
decimal = decimal * 16 + c - '0';
else if (c >= 'A' && c <= 'F')
decimal = decimal * 16 + c - 'A' + 10;
else if (c >= 'a' && c <= 'f')
decimal = decimal * 16 + c - 'a' + 10;
else
throw std::invalid_argument("Invalid character in hexadecimal string.");
}
return decimal;
}
int main() {
std::string hexNum = "ff";
try {
int decimalNum = hexadecimalToDecimal(hexNum);
std::cout << "Hexadecimal " << hexNum << " is equal to decimal " << decimalNum << std::endl;
} catch (const std::invalid_argument& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
上述代码首先检查每个字符是否在十六进制范围内,如果不是则抛出异常。
阅读全文