C语言实现16进制字符串转十进制整数函数conv
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结尾。
- 函数对输入字符串的格式不做进一步验证,如果输入字符串格式错误,则函数可能会返回错误的结果。
原文地址: https://www.cveoy.top/t/topic/nSc1 著作权归作者所有。请勿转载和采集!