用c语言编写程序,编写一个函数,输入参数为一个16进制数据的字符串,输出为10进制整数
时间: 2024-09-14 15:05:56 浏览: 51
在C语言中,可以使用`strtol`函数来实现从字符串形式的16进制数据转换为10进制整数的功能。`strtol`函数的原型如下:
```c
long strtol(const char *str, char **endptr, int base);
```
其中,`str`是要转换的字符串,`endptr`是一个指针的指针,用于存储转换后剩余的字符串,`base`是转换的基数。对于16进制数,基数应该是16。
下面是一个简单的示例函数,它接受一个16进制字符串作为输入,并返回对应的10进制整数值:
```c
#include <stdio.h>
#include <stdlib.h>
long hexStringToDecimal(const char *hexStr) {
// 将字符串指针转换为char**类型,因为strtol需要这个类型
char *strPtr = (char *)hexStr;
// 调用strtol函数进行转换,基数为16表示16进制
long decimalValue = strtol(strPtr, NULL, 16);
return decimalValue;
}
int main() {
// 示例16进制字符串
const char *hexNumber = "1A3F";
// 调用函数并打印结果
long decimalResult = hexStringToDecimal(hexNumber);
printf("16进制数 %s 对应的10进制数为 %ld\n", hexNumber, decimalResult);
return 0;
}
```
在这个例子中,`hexStringToDecimal`函数使用`strtol`将输入的16进制字符串转换为10进制整数,并返回这个整数。`main`函数中给出了一个示例字符串`"1A3F"`,并调用了`hexStringToDecimal`函数来完成转换并打印结果。
阅读全文