C语言面试——16进制数转换成10进制数

前言

题目要求:16进制字符串转10进制数, char *a 是输入的16进制字符串。(10分)
int fun(char *a)
{
//请填充…

}
实现和验证如下:

#include <stdio.h>
#include <stdlib.h>

int fun(char *a)
{
    char *endptr;
    long int result;

    // 调用 strtol() 函数进行转换
    result = strtol(a, &endptr, 16);

    // 检查转换过程中是否出错
    if (*endptr != '\0') {
        printf("Conversion error: the input string is not a valid hexadecimal number!\n");
        return -1;
    }

    // 返回转换结果
    return (int)result;
}
int main()
{
    char *hex1 = "0XAB";  // 16进制数0XAB对应的10进制数为171

    int dec1 = fun(hex1);

    printf("16进制: %s, 10进制: %d\n", hex1, dec1);

    return 0;
}

在这里插入图片描述

strtol()函数是C语言标准库中的一个字符串转换函数,用于将字符串转换为长整型数(long int)。它的函数原型如下:

long int strtol(const char *str, char **endptr, int base);
strtol()函数接受三个参数:

str:要进行转换的字符串。
endptr:这是一个指向char*类型的指针,用于存储转换过程中第一个不能被转换的字符的位置。如果endptr不为NULL,则之后它会指向第一个不能被转换的字符。如果整个字符串都可以被转换,endptr会被设置为指向字符串的终止符\0。
base:指定要转换的数字的进制。可以设置为2-36之间的任意值。常见的进制包括二进制(base为2)、十进制(base为10)和十六进制(base为16)。
strtol()函数的返回值是转换后的长整型数。

strtol()函数从输入字符串的起始处开始解析,尝试将其转换为长整型数。转换过程中,它会忽略前导空白字符(比如空格、制表符等),直到找到第一个非空白字符。然后,它会根据指定的进制将连续的字符序列转换为长整型数,直到遇到第一个不能被转换的字符为止。

以下是strtol()函数的一些常见用途:

将字符串表示的整数转换为长整型数。
将字符串表示的十六进制数、八进制数等转换为长整型数。
检查字符串是否是一个有效的数字。
检查字符串是否是一个有效的整数,并获取其值。
处理配置文件等需要解析字符串数字的场景。
总之,strtol()函数是一个非常有用的函数,用于字符串和长整型数之间的转换,并提供了灵活的处理选项。

总结:
利用strtol函数是gpt给的提示,哟啊奴然自己写的话比较麻烦。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值