用strtol将16进制转换成10进制
时间: 2024-01-07 15:04:29 浏览: 273
16进制转换成10进制
3星 · 编辑精心推荐
使用 `strtol` 函数可以更方便地将十六进制数转换为十进制数。`strtol` 函数是C语言中的标准库函数,可以将字符串转换为长整型数值。
下面是一个示例代码,演示如何使用 `strtol` 函数将十六进制字符串转换为十进制整数:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
const char *hex = "1A";
char *endPtr;
long decimal = strtol(hex, &endPtr, 16);
if (*endPtr != '\0') {
printf("Invalid hex input: %s\n", hex);
return 0;
}
printf("Hex: %s\n", hex);
printf("Decimal: %ld\n", decimal);
return 0;
}
```
在上面的示例中,我们使用字符串 `"1A"` 作为示例输入。`strtol` 函数的第一个参数是要转换的字符串(`hex`),第二个参数是一个指向 `char` 类型指针的指针(`endPtr`),用于存储在转换过程中遇到的第一个非法字符的位置。
通过将第三个参数设置为 `16`,我们告诉 `strtol` 函数将输入字符串视为十六进制数。转换后的结果将存储在 `decimal` 变量中。
然后,我们检查 `endPtr` 是否指向字符串结束符 `\0`。如果不是,则表示输入字符串中包含非法字符,我们将打印相应的错误消息。
最后,我们打印原始的十六进制字符串和转换后的十进制数。
运行上述代码,将得到以下输出:
```
Hex: 1A
Decimal: 26
```
这表明十六进制数 `1A` 被成功转换为了十进制数 `26`。你可以根据需要修改示例代码,并用其他的十六进制字符串进行测试。
阅读全文