c++ 高精度 16进制转10进制算法
时间: 2023-08-16 21:13:28 浏览: 188
在C++中,如果要进行高精度的16进制转10进制算法,可以使用字符串操作和逐位计算的方法。以下是一个示例代码:
```cpp
#include <iostream>
#include <string>
int hexToDecimal(const std::string& hexStr) {
int decimal = 0;
int power = 1;
// 从字符串的最后一位开始逐位计算
for (int i = hexStr.size() - 1; i >= 0; i--) {
int digit;
if (hexStr[i] >= '0' && hexStr[i] <= '9') {
digit = hexStr[i] - '0';
} else if (hexStr[i] >= 'A' && hexStr[i] <= 'F') {
digit = hexStr[i] - 'A' + 10;
} else if (hexStr[i] >= 'a' && hexStr[i] <= 'f') {
digit = hexStr[i] - 'a' + 10;
} else {
// 非法字符
std::cout << "Invalid hex string" << std::endl;
return -1;
}
decimal += digit * power;
power *= 16;
}
return decimal;
}
int main() {
std::string hexStr = "A1B";
int decimal = hexToDecimal(hexStr);
std::cout << decimal << std::endl; // 输出 2587
return 0;
}
```
在上述代码中,`hexToDecimal`函数接受一个16进制字符串作为输入,并返回对应的10进制整数。函数通过逐位计算,将每个16进制位转换为对应的10进制值,并根据位数计算权重,最终累加得到结果。
需要注意的是,函数中还包含了一些错误处理,例如处理非法字符的情况。如果输入的16进制字符串包含非法字符,函数将返回-1表示转换失败。
阅读全文