C语言十六进制转十进制函数
时间: 2023-11-17 21:07:05 浏览: 116
以下是一个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)。
相关问题
c语言十六进制转十进制函数怎么写
下面是一个将十六进制字符串转换为十进制整数的函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int hex_to_dec(char *hex)
{
int len = strlen(hex);
int dec = 0;
int base = 1;
for (int i = len - 1; i >= 0; i--)
{
if (isdigit(hex[i]))
{
dec += (hex[i] - '0') * base;
}
else if (isxdigit(hex[i]))
{
dec += (toupper(hex[i]) - 'A' + 10) * base;
}
base *= 16;
}
return dec;
}
int main()
{
char hex[] = "1A";
int dec = hex_to_dec(hex);
printf("%s in hex = %d in decimal\n", hex, dec);
return 0;
}
```
这个函数首先计算十六进制字符串长度,然后从字符串的末尾开始遍历,逐个字符转换为对应的十进制数并相加。当字符是数字时,直接将其转换为对应的十进制数;当字符是字母时,将其转换为对应的十进制数(A~F 分别对应 10~15)。最后,将所有转换后的数相加即可得到十进制整数。
在上面的示例中,我们将字符串 "1A" 转换为十进制整数 26。
写一个C语言十六进制转十进制函数
当然,下面是一个简单的C语言函数,用于将十六进制数转换为十进制数:
```c
#include <stdio.h>
#include <math.h>
int hexToDecimal(char hex[]) {
int decimal = 0, power = 0;
int len = 0;
while (hex[len] != '\0') {
len++;
}
for (int i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
decimal += (hex[i] - '0') * pow(16, power);
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
decimal += (hex[i] - 'A' + 10) * pow(16, power);
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
decimal += (hex[i] - 'a' + 10) * pow(16, power);
}
power++;
}
return decimal;
}
int main() {
char hex[100];
printf("请输入一个十六进制数:");
scanf("%s", hex);
int decimal = hexToDecimal(hex);
printf("转换为十进制数为:%d\n", decimal);
return 0;
}
```
这个函数会读取用户输入的十六进制数,并将其转换为十进制数后输出。请注意,这个函数假设输入的十六进制数是有效的,并且不考虑负数的情况。
阅读全文