c语言十六进制转十进制
时间: 2023-10-19 18:11:30 浏览: 42
在 C 语言中,可以使用 `strtol()` 函数将十六进制字符串转换为十进制数字。下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_string[] = "1A"; // 十六进制字符串
char *endptr; // 指向转换后字符串末尾的指针
long int decimal = strtol(hex_string, &endptr, 16); // 将十六进制字符串转换为十进制数值
if (endptr == hex_string) { // 如果没有转换任何字符
printf("Invalid input!\n");
} else {
printf("%s in hex = %ld in decimal\n", hex_string, decimal);
}
return 0;
}
```
运行结果:
```
1A in hex = 26 in decimal
```
其中,`strtol()` 函数的第一个参数是要转换的字符串,第二个参数是一个指向指针的指针,用于存储转换后字符串的末尾位置,第三个参数是基数,这里使用 16 表示输入的字符串是十六进制。如果转换成功,函数返回转换后的整数值。如果无法转换,则返回 0。
相关问题
C语言十六进制转十进制
C语言中可以使用循环和条件语句来实现十六进制转十进制的功能。具体实现方法如下:
1. 遍历输入的十六进制数字串,记录其中十六进制数的个数,非十六进制数不计在内。
2. 遍历输入的十六进制数字串,将每个十六进制数转换成对应的十进制数。
3. 将每个十进制数乘以16的n-1次方(n为该十六进制数在数字串中的位置),并将所有结果相加,即可得到最终的十进制数。
下面是一个示例代码:
```
#include <stdio.h>
#include <string.h>
void conversion(char str[]) {
int i = 0, j = 0, num = 0, sum = 0, len = 0;
while ((str[i] >= 'a' && str[i] <= 'f') || (str[i] >= 'A' && str[i] <= 'F') || (str[i] >= '0' && str[i] <= '9')) {
len++;
i++;
}
i = 0;
while (str[i] != '\0') {
if (str[i] >= '0' && str[i] <= '9') {
num = str[i] - '0';
} else if (str[i] >= 'a' && str[i] <= 'f') {
num = str[i] - 'a' + 10;
} else if (str[i] >= 'A' && str[i] <= 'F') {
num = str[i] - 'A' + 10;
} else {
break;
}
for (j = 0; j < len - 1; j++) {
num = num * 16;
}
sum += num;
i++;
len--;
}
printf("%d\n", sum);
}
int main() {
char str[100];
scanf("%s", str);
conversion(str);
return 0;
}
```
C语言十六进制转十进制函数
以下是一个C语言代码示例,用于将十六进制数转换为十进制:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char hexNum[10]; // 存储输入的十六进制数
int decNum; // 存储转换后的十进制数
printf("请输入一个十六进制数:");
scanf("%s", hexNum);//例如0xFEFF或0x00800000
// 使用 strtol 函数将十六进制数转换为十进制数
decNum = strtol(hexNum, NULL, 16);
printf("转换后的十进制数为:%d\n", decNum);
return 0;
}
```
在上述代码中,使用了 `strtol` 函数将输入的十六进制数转换为十进制数,并将结果存储在 `decNum` 变量中。`strtol` 函数的第一个参数是输入的十六进制数,第二个参数是一个指向字符指针的指针,用于存储未转换的部分(在本例中不需要),第三个参数是要转换的进制数(在本例中为 16)。