十六进制转换为十进制c++
时间: 2024-09-18 07:09:45 浏览: 45
十六进制转换成十进制在C++中可以使用内置函数`stoi()`或者手动计算每一位的值。以下是两种方法:
1. **使用`stoi()`函数**:
```cpp
#include <string>
#include <iostream>
int hexToDecimal(std::string hexString) {
return std::stoi(hexString, nullptr, 16);
}
int main() {
std::string hex = "A1B2";
int decimal = hexToDecimal(hex);
std::cout << "Hexadecimal (" << hex << ") is equal to decimal: " << decimal << std::endl;
return 0;
}
```
在这个例子中,`hexString`是十六进制数的字符串形式,`nullptr`表示忽略前导零,并指定基数16。
2. **手动计算每位的值**:
```cpp
#include <iostream>
#include <cmath>
int hexToDecimal(char hexChar) {
if (hexChar >= '0' && hexChar <= '9') {
return hexChar - '0';
} else if (hexChar >= 'A' && hexChar <= 'F') {
return hexChar - 'A' + 10;
} else if (hexChar >= 'a' && hexChar <= 'f') {
return hexChar - 'a' + 10;
}
// 如果不是有效的十六进制字符,返回错误处理
throw std::invalid_argument("Invalid hexadecimal character");
}
int hexToDecimal(std::string hexString) {
int result = 0;
for (char c : hexString) {
result <<= 4; //左移四位
result |= hexToDecimal(c);
}
return result;
}
int main() {
std::string hex = "A1B2";
int decimal = hexToDecimal(hex);
std::cout << "Hexadecimal (" << hex << ") is equal to decimal: " << decimal << stdn;
return 0;
}
```
这里手动处理了每一位的转换和位运算。
阅读全文