十六进制转十进制c语言
时间: 2023-08-31 22:06:00 浏览: 249
在 C 语言中,可以使用标准库函数 `strtol()` 来将十六进制字符串转换为十进制整数。示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_str[] = "1A";
char *end_ptr;
long dec_num;
dec_num = strtol(hex_str, &end_ptr, 16);
printf("Hexadecimal string %s is equivalent to decimal number %ld\n", hex_str, dec_num);
return 0;
}
```
该程序将十六进制字符串 "1A" 转换为十进制整数 26,并输出结果。需要注意的是,`strtol()` 函数的第二个参数是用来返回处理完的字符串的指针,第三个参数指定了字符串的基数,这里使用 16 表示字符串是十六进制形式的。
相关问题
十六进制转十进制C语言
在C语言中,可以使用`strtol`函数将十六进制字符串转换为十进制数。示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex[] = "1A"; // 十六进制字符串
long dec = strtol(hex, NULL, 16); // 将十六进制字符串转换为十进制数
printf("%ld\n", dec); // 输出十进制数
return 0;
}
```
输出结果为:26。
十六进制转十进制c语言代码
十六进制转十进制的过程可以通过乘以16的幂次方来实现,具体步骤如下:
1. 输入16进制数的字符串,例如"3C2A"。
2. 从字符串的右侧开始读取每一位数字(包括A~F),每读取一位就将其转换为对应的十进制数,例如,2对应的十进制数是2,A对应的十进制数是10。
3. 对于第i位数字(从1开始计数),其对应的十进制数为num_i,那么其在十进制中的值为num_i * 16^(i-1)。
4. 将所有位的值相加即可得到最终结果。
下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int hex_to_dec(char *hex) {
int len = strlen(hex);
int dec = 0;
for (int i = 0; i < len; i++) {
int num = hex[i] - '0'; // 将字符转换为数字
if (num > 9) {
num = num - 7; // A~F对应的数字是10~15
}
dec += num * (1 << (4 * (len - i - 1))); // 16的幂次方
}
return dec;
}
int main() {
char hex_str[] = "3C2A";
int dec = hex_to_dec(hex_str);
printf("%d\n", dec); // 输出结果:15466
return 0;
}
```
阅读全文