C语言函数实现16进制字符串转换为十进制整数
C语言函数实现16进制字符串转换为十进制整数
本文将介绍如何使用C语言编写一个函数,将16进制字符串转换为十进制整数。该函数将接收一个以'H'或'h'结尾的16进制字符串,并返回相应的十进制整数。如果输入字符串格式不正确,则返回-1。
函数代码:
int conv(char hex[]){
int result=0;
int i=0;
while(hex[i]!='�'){
if(i>=6)//位数超过6位
return -1;
int digit;
if(hex[i]>='0' && hex[i]<='9')//0~9
digit=hex[i]-'0';
else if(hex[i]>='A' && hex[i]<='F')//A~F
digit=hex[i]-'A'+10;
else if(hex[i]>='a' && hex[i]<='f')//a~f
digit=hex[i]-'a'+10;
else//不是0~9或A~F/a~f
return -1;
result=result*16+digit;//将十六进制数字转化为十进制
i++;
}
if(hex[i-1]!='H' && hex[i-1]!='h')//最后一位不是H或h
return -1;
return result;
}
函数功能:
- 接收一个以'H'或'h'结尾的16进制字符串作为参数。
- 检查字符串长度是否超过6位或不足1位。
- 检查字符串中每个字符是否为有效的16进制字符(0-9、A-F或a-f)。
- 将每个字符转换为相应的十进制值,并进行累加计算。
- 检查最后一位是否为'H'或'h'。
- 返回计算得到的十进制整数,如果输入格式不正确,则返回-1。
示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int m;
char hex[7];
scanf('%s', hex);
m = conv(hex);
if (m == -1) {
printf('输入有误!\n');
} else {
printf('%d\n', m);
}
return 0;
}
输入:
57ABH
输出:
22443
原文地址: https://www.cveoy.top/t/topic/nSef 著作权归作者所有。请勿转载和采集!