使用c++将十六进制转换成十进制
时间: 2024-01-12 22:04:37 浏览: 135
可以使用 `std::stoi()` 函数将十六进制字符串转换为十进制整数。示例代码如下:
```cpp
#include <iostream>
#include <string>
int main() {
std::string hex = "1A";
int dec = std::stoi(hex, nullptr, 16);
std::cout << dec << std::endl; // 输出 26
return 0;
}
```
在 `std::stoi()` 函数中,第一个参数是要转换的字符串,第二个参数是用于存储转换后的整数的指针,第三个参数是指定字符串的进制,这里设置为 16 表示输入的是十六进制字符串。如果第二个参数为 `nullptr`,则函数会返回转换后的整数。
相关问题
C++十六进制转换成十进制
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`异常。
C++编写十六进制转换十进制
#include <stdio.h>
int main() {
char hex[100];
int decimal = 0, i = 0, j, digit;
printf("Enter a hexadecimal number: ");
scanf("%s", hex);
// Find the length of the hexadecimal number
while(hex[i] != '\0') {
i++;
}
i--;
// Convert hexadecimal to decimal
for(j = 0; hex[j] != '\0'; j++) {
if(hex[j] >= '0' && hex[j] <= '9') {
digit = hex[j] - '0';
} else if(hex[j] >= 'a' && hex[j] <= 'f') {
digit = hex[j] - 'a' + 10;
} else if(hex[j] >= 'A' && hex[j] <= 'F') {
digit = hex[j] - 'A' + 10;
}
decimal += digit * pow(16, i);
i--;
}
printf("Decimal number: %d\n", decimal);
return 0;
}
阅读全文