c语言16进制转换10进制
时间: 2023-11-02 13:07:35 浏览: 48
C语言中可以使用`strtol`函数将16进制字符串转换为10进制数字。示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_str[] = "1A";
long decimal = strtol(hex_str, NULL, 16);
printf("0x%s in decimal is %ld\n", hex_str, decimal);
return 0;
}
```
输出为:
```
0x1A in decimal is 26
```
相关问题
单片机c语言16进制转换10进制
单片机中,可以使用以下代码将16进制转换为10进制:
```c
#include <stdio.h>
int main() {
char hex[10];
printf("请输入一个16进制数: ");
scanf("%s", hex);
int dec = 0;
int i = 0;
while (hex[i] != '\0') {
if (hex[i] >= '0' && hex[i] <= '9') {
dec = dec * 16 + (hex[i] - '0');
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
dec = dec * 16 + (hex[i] - 'A' + 10);
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
dec = dec * 16 + (hex[i] - 'a' + 10);
} else {
printf("输入的不是有效的16进制数\n");
return 0;
}
i++;
}
printf("转换为10进制数为: %d\n", dec);
return 0;
}
```
以上代码中,用户可以输入一个16进制数,程序会将其转换为对应的10进制数并输出。程序首先使用`scanf`函数获取用户输入的16进制数,然后使用循环遍历输入的每个字符。根据字符的范围,将其转换为对应的10进制数,并累加到`dec`变量中。最后,输出转换后的10进制数。
注意:该代码适用于大部分单片机开发环境,但具体的实现可能会因为不同的单片机型号而有所不同。
C语言16进制转换为10进制函数
以下是一个将C语言中的16进制字符串转换为10进制整数的函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int hexToDec(char* hexStr) {
int len = strlen(hexStr);
int dec = 0;
for(int i = 0; i < len; i++) {
char c = hexStr[i];
if(isdigit(c)) {
dec = dec * 16 + (c - '0');
} else {
c = toupper(c);
dec = dec * 16 + (c - 'A' + 10);
}
}
return dec;
}
```
这个函数通过遍历16进制字符串的每个字符,将其转换为10进制数。如果字符是数字,则直接将其转换为整数值,并将其乘以16的幂次方加到结果中。否则,字符是字母,则将其转换为十进制数(例如,A是10,B是11,等等),并将其乘以16的幂次方加到结果中。
注意,这个函数假设输入的16进制字符串是有效的,并且没有前导零。如果你需要处理无效的输入,你可以在函数中添加一些错误处理代码,例如检查字符串长度是否为零,检查字符是否在有效范围内,等等。