C++代码实现:char数组存储16进制数据,将char[0]、char[1]、char[2]、char[3]转化为10进制并存储到int类型参数中
时间: 2024-12-09 08:18:21 浏览: 74
unsigned char数组转成string 用16进制表示
在C++中,你可以通过解析字符数组中的每一位十六进制数,并转换成对应的十进制值,然后累加起来存储到`int`类型中。以下是一个简单的示例:
```cpp
#include <string>
#include <sstream>
// 函数用于将4个字符组成的16进制字符串转换为整数
int hexToDecimal(const char* hexChars) {
int decimalValue = 0;
std::stringstream ss(std::string(hexChars)); // 将字符串转为stringstream便于处理
for (std::size_t i = 0; i < 4; ++i) { // 遍历每一位
char digit = ss.get(); // 获取当前位的字符
if (digit >= '0' && digit <= '9') { // 如果是数字(0-9)
decimalValue += digit - '0'; // 直接加上对应数值
} else if (digit >= 'A' && digit <= 'F') { // 如果是大写的A-F
decimalValue += digit - 'A' + 10; // 加上10对应10-15
} else if (digit >= 'a' && digit <= 'f') { // 如果是小写的a-f
decimalValue += digit - 'a' + 10; // 加上10对应10-15
} else {
throw std::invalid_argument("Invalid hexadecimal character"); // 非法字符抛出异常
}
// 每四位进行左移操作,相当于乘以16^(n-1),n从0开始递增
decimalValue <<= 4;
}
return decimalValue;
}
// 示例用法
int main() {
char hexArray[] = {'A', 'B', 'C', 'D'};
try {
int value = hexToDecimal(hexArray);
std::cout << "Hexadecimal value: " << value << std::endl;
} catch (const std::invalid_argument& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
阅读全文