十六进制转换十进制C语言
时间: 2023-11-23 19:11:27 浏览: 89
将十六进制数转换为十进制数的C语言代码如下:
```c
#include <stdio.h>
int main() {
char hex_num[] = "2F"; // 16进制数
int dec_num = 0; // 转换得到的10进制数
int base = 1; // 权值
for (int i = strlen(hex_num) - 1; i >= 0; i--) {
if (hex_num[i] >= '0' && hex_num[i] <= '9') {
dec_num += (hex_num[i] - '0') * base;
} else if (hex_num[i] >= 'A' && hex_num[i] <= 'F') {
dec_num += (hex_num[i] - 'A' + 10) * base;
}
base *= 16;
}
printf("十六进制数 %s 转换为十进制数为 %d\n", hex_num, dec_num);
return 0;
}
```
这段代码中我们首先定义了一个十六进制数字符串,然后遍历这个字符串,将每一位的十六进制数转换为对应的十进制数,并按16的幂次相加,最后得到转换结果。其中if条件判断语句用来判断当前位是0-9的数字还是A-F的字符。
相关问题
十六进制转换十进制c语言
十六进制转换为十进制的方法是将每个十六进制数位乘以16的相应次幂,然后将结果相加。在C语言中,可以使用`strtol()`函数将字符串类型的十六进制数转换为整型的十进制数。函数原型如下:
```
long int strtol(const char *str, char **endptr, int base);
```
其中,`str`为要转换的字符串,`endptr`用于存放第一个无法转换的字符位置,`base`为要转换的进制数,对于十六进制数应该传入16。示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
char hex[10] = "1A";
char *endptr;
long int dec;
dec = strtol(hex, &endptr, 16);
printf("%s in hex is %ld in decimal.\n", hex, dec);
return 0;
}
```
输出结果为:
```
1A in hex is 26 in decimal.
```
c语言十六进制转换十进制
在C语言中,可以使用`strtol()`函数将十六进制字符串转换为十进制数。
例如,将字符串"0x1A"转换为十进制数:
```c
#include <stdlib.h>
#include <stdio.h>
int main() {
char hexStr[] = "0x1A";
char *endptr;
long int decimal = strtol(hexStr, &endptr, 16);
if (*endptr != '\0') {
printf("Invalid hexadecimal string!\n");
} else {
printf("The decimal value is %ld\n", decimal);
}
return 0;
}
```
输出结果为:
```
The decimal value is 26
```
其中`strtol()`函数的第一个参数是要转换的字符串,第二个参数是一个指向指针的指针,它将指向未转换的字符串中第一个无法转换为数字的字符的位置。第三个参数表示字符串中数字的基数,这里设为16表示十六进制。如果转换成功,`strtol()`函数将返回转换后的十进制数。
阅读全文