C++代码实现将两位带符号十六进制整型转成带符号的十进制整型数。例如:FF = -1,10 = 16.
时间: 2024-09-29 19:03:12 浏览: 20
在C++中,你可以使用`std::stringstream`和`std::hex`来转换十六进制字符串到十进制整数。如果你想要处理有符号整数,你需要先确定其正负。下面是一个简单的示例:
```cpp
#include <iostream>
#include <sstream>
#include <string>
int hexToDecimal(const std::string& hexStr) {
int decimalValue;
bool isNegative = false;
// 判断是否以'-'开头,表示负数
if (hexStr[0] == '-') {
isNegative = true;
hexStr.erase(0, 1); // 移除负号
}
// 将十六进制字符串转换为十进制
std::stringstream ss(hexStr);
ss >> std::hex; // 设置输入模式为十六进制
ss >> decimalValue;
// 如果原字符串是负数,结果也是负的
return isNegative ? -decimalValue : decimalValue;
}
int main() {
std::string hexStr1 = "-FF";
std::string hexStr2 = "10";
int value1 = hexToDecimal(hexStr1);
int value2 = hexToDecimal(hexStr2);
std::cout << "FF in hexadecimal: " << (isNegative(value1) ? "-" : "") << value1 << std::endl;
std::cout << "10 in hexadecimal: " << value2 << std::endl;
return 0;
}
```
在这个例子中,`hexToDecimal`函数会接收一个十六进制字符串,然后根据前缀判断它是正数还是负数,并通过`std::hex`和`std::stringstream`将其转换为十进制。