C语言16进制转10进制
时间: 2023-09-09 19:08:46 浏览: 548
要将C语言中的16进制数转换为10进制数,你可以使用标准库函数`strtol()`。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_num[] = "1A"; // 16进制数
long dec_num;
dec_num = strtol(hex_num, NULL, 16);
printf("十六进制数 %s 转换为十进制数为 %ld\n", hex_num, dec_num);
return 0;
}
```
在上面的示例代码中,我们将字符串`"1A"`作为16进制数存储在`hex_num`数组中。然后,我们使用`strtol()`函数将其转换为长整型的10进制数。最后,我们使用`printf()`函数打印结果。
运行上述代码,将输出:
```
十六进制数 1A 转换为十进制数为 26
```
这里的`16`是`strtol()`函数的第三个参数,表示输入字符串是16进制数。如果你要转换其他进制的数,只需相应地更改基数值即可。
相关问题
c语言16进制转10进制
在C语言中,可以使用`strtol`函数将16进制字符串转换为10进制整数。
例如,将字符串"1A"转换为10进制整数,可以使用以下代码:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_str[] = "1A";
char *end_ptr;
long int decimal = strtol(hex_str, &end_ptr, 16);
printf("%ld\n", decimal);
return 0;
}
```
输出结果为:26。
其中,`strtol`函数的第一个参数是要转换的字符串,第二个参数是一个指向char类型指针的指针,用于返回转换后未被转换的字符串部分的指针,第三个参数是要转换的字符串的基数,这里使用16进制。函数返回转换后的长整型整数。
c语言 16进制转10进制
在C语言中,将十六进制数转换为十进制数可以利用标准库函数`strtol`或者手动解析字符串。这里我会演示如何手动解析:
```c
#include <stdio.h>
#include <string.h>
int hex_to_decimal(char hex[]) {
int decimal = 0;
int len = strlen(hex);
bool isNegative = (hex[0] == '-');
if (isNegative) {
hex++; // Skip the negative sign
len--;
}
for (int i = 0; i < len; i++) {
char digit;
if (i < 2 && hex[i] >= 'A' && hex[i] <= 'F') { // Handle uppercase letters
digit = hex[i] - 'A' + 10;
} else if (i < 2 && hex[i] >= 'a' && hex[i] <= 'f') { // Handle lowercase letters
digit = hex[i] - 'a' + 10;
} else if (hex[i] >= '0' && hex[i] <= '9') { // Handle numbers
digit = hex[i] - '0';
} else {
return -1; // Invalid character in hexadecimal number
}
decimal = decimal * 16 + digit; // Shift and add the current digit
}
return isNegative ? -decimal : decimal;
}
int main() {
char hexNum[] = "FF"; // Example hexadecimal number
int decimalNum = hex_to_decimal(hexNum);
printf("Hexadecimal %s is equal to decimal %d\n", hexNum, decimalNum);
return 0;
}
```
这个程序会读取一个十六进制字符串,将其转换成对应的十进制数值,并打印出来。如果输入中有非十六进制字符,它将返回-1表示错误。
阅读全文