c语言16进制转10进制函数
时间: 2024-01-13 20:48:57 浏览: 113
您好,可以使用C语言中的strtol函数将16进制字符串转换为10进制数。函数原型如下:
```c
long strtol(const char *str, char **endptr, int base);
```
其中,str表示16进制字符串,endptr用于指向未转换的部分,base为进制数,这里设为16。
例如,将字符串"1A"转换为10进制数:
```c
char *str = "1A";
char *ptr;
long decimal = strtol(str, &ptr, 16);
printf("%ld", decimal); // 输出结果为26
```
希望对您有所帮助。
相关问题
C语言 16进制转10进制函数
下面是一个将 16 进制字符串转换为 10 进制整数的 C 语言函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int hexToDec(char hex[]) {
int len = strlen(hex);
int base = 1;
int dec = 0;
for (int i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
dec += (hex[i] - 48) * base;
base = base * 16;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
dec += (hex[i] - 55) * base;
base = base * 16;
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
dec += (hex[i] - 87) * base;
base = base * 16;
}
}
return dec;
}
int main() {
char hex[] = "1A";
printf("%s in decimal = %d\n", hex, hexToDec(hex));
return 0;
}
```
该函数将输入的 16 进制字符串转换为 10 进制整数。函数首先计算输入字符串的长度,然后从字符串的最后一个字符开始遍历,并根据字符是数字还是字母计算其对应的数值。最后,将所有字符对应的数值相加,得到最终的 10 进制整数。
C语言16进制转10进制函数
在C语言中,没有内置的函数可以直接将16进制字符串转换为10进制整数,但你可以自定义一个函数来实现这个功能。这里我们可以使用`strtol`函数配合循环来逐位转换。以下是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
long long hex_to_decimal(const char* hex_str) {
int len = strlen(hex_str);
long long decimal = 0;
bool is_negative = hex_str == '-';
if (is_negative) {
hex_str++;
len--;
}
for (int i = 0; i < len; i++) {
if (hex_str[i] >= '0' && hex_str[i] <= '9') {
decimal = decimal * 16 + (hex_str[i] - '0');
} else if (hex_str[i] >= 'A' && hex_str[i] <= 'F') {
decimal = decimal * 16 + (hex_str[i] - 'A' + 10);
} else if (hex_str[i] >= 'a' && hex_str[i] <= 'f') {
decimal = decimal * 16 + (hex_str[i] - 'a' + 10);
} else {
printf("Invalid character in hexadecimal string: %c\n", hex_str[i]);
return -1; // 或者抛出错误
}
}
return is_negative ? -decimal : decimal;
}
int main() {
char hex[] = "FF";
long long decimal_result = hex_to_decimal(hex);
if (decimal_result != -1) {
printf("Hexadecimal (%s) converted to decimal is: %lld\n", hex, decimal_result);
}
return 0;
}
```
在这个示例中,`hex_to_decimal`函数接受一个16进制字符串,通过遍历并逐位转换,将其转换成10进制表示。请注意,这个函数假设输入字符串只包含有效的16进制字符。
阅读全文