C语言实现16进制字符串转十进制整数函数conv

本文提供C语言函数conv的实现代码,用于将16进制数字字符串转换为十进制整数。函数要求输入的16进制数字字符串长度在1位到6位之间,且以H或h结尾。

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

int conv(char hex[])
{
    int i=0,num=0;
    while(hex[i]!='\0')
    {
        if(i>=6) //判断位数是否超过6位
            return -1;
        if(hex[i]>='0'&&hex[i]<='9') //处理0~9
            num=num*16+(hex[i]-'0');
        else if(hex[i]>='A'&&hex[i]<='F') //处理A~F
            num=num*16+(hex[i]-'A'+10);
        else if(hex[i]>='a'&&hex[i]<='f') //处理a~f
            num=num*16+(hex[i]-'a'+10);
        else if(hex[i]=='H'||hex[i]=='h') //判断是否以H或h结尾
        {
            if(i==0) //判断是否为空字符串
                return -1;
            else
                return num;
        }
        else //输入有误
            return -1;
        i++;
    }
    return -1;
}

函数功能:

该函数接受一个字符数组作为参数,该数组包含一个16进制数字字符串。函数将该字符串转换为十进制整数并返回。

函数参数:

  • hex:包含16进制数字字符串的字符数组。

返回值:

  • 如果输入的字符串格式错误,则返回-1;
  • 否则,返回转换后的十进制整数。

代码示例:

int main()
{
int m;
char hex[7];
scanf('%s',hex);
m=conv(hex);
if(m==-1)
    printf('输入有误!');
else
    printf('%d\n',m);
}

示例输入:

57ABH

示例输出:

22443

注意:

  • 函数只处理1位到6位的16进制数字字符串,且必须以H或h结尾。
  • 函数对输入字符串的格式不做进一步验证,如果输入字符串格式错误,则函数可能会返回错误的结果。
C语言实现16进制字符串转十进制整数函数conv

原文地址: https://www.cveoy.top/t/topic/nSc1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录