C语言中可以使用以下两种方法进行十六进制与十进制之间的转换:
1. 使用标准函数库中的函数进行转换:
- 十六进制转十进制:使用 `strtol()` 函数,该函数将一个字符串转换为长整型数值。例如:
````c
char hex_str[] = "1A";
long decimal_num = strtol(hex_str, NULL, 16);
printf("%ld", decimal_num); // 输出结果为:26
```
在这里,`strtol()` 函数的第一个参数为需要转换的十六进制字符串,第二个参数为指向第一个无法转换的字符的指针,第三个参数为进制数,这里设置为 16。
- 十进制转十六进制:使用 `sprintf()` 函数将十进制数转换为十六进制字符串,例如:
````c
int decimal_num = 26;
char hex_str[10];
sprintf(hex_str, "%X", decimal_num);
printf("%s", hex_str); // 输出结果为:1A
```
在这里,`sprintf()` 函数的第一个参数为存储转换结果的字符数组,第二个参数为格式化字符串,这里使用 `%X` 表示将整数以十六进制输出。
2. 使用算法进行转换:
- 十六进制转十进制:将每一位十六进制数转换为十进制,然后将各个位数的十进制数相加即可。例如:
````c
char hex_str[] = "1A";
int decimal_num = 0;
for(int i = 0; hex_str[i] != '