C++十六进制转换成十进制
时间: 2024-10-19 20:14:51 浏览: 17
C++中将十六进制数转换成十进制可以使用内置的`stoi()`函数,如果需要处理十六进制字符串,可以先手动将其转换为大写字母形式,因为` stoi()`默认只接受小写的数字字符。以下是一个简单的例子:
```cpp
#include <string>
#include <iostream>
int main() {
std::string hex_string = "1A"; // 十六进制字符串
int decimal_number = 0;
// 确保字符串是大写的
for (char c : hex_string) {
if ('a' <= c && c <= 'f') {
c -= 'a' - 'A'; // 将小写字母转为大写
}
}
// 使用 stoi 进行转换
try {
decimal_number = std::stoi(hex_string, nullptr, 16); // 第二个参数指明基数为16
std::cout << "十六进制 " << hex_string << " 转换成十进制为 " << decimal_number << std::endl;
} catch (std::invalid_argument &e) {
std::cerr << "Invalid hexadecimal number: " << hex_string << std::endl;
}
return 0;
}
```
在这个例子中,`std::stoi()`尝试将字符串解析为十六进制,并返回对应的十进制值。如果输入的不是有效的十六进制,会抛出`std::invalid_argument`异常。
阅读全文