C语言实现十六进制字符串转十进制整数
这段代码实现了将一个十六进制字符串转化为对应的十进制整数。具体实现过程如下:
- 初始化整数 'result' 为 0,表示转化后的十进制数。
- 从字符串的第一个字符开始遍历,如果遇到非法字符或位数超过 6 位,则直接返回 -1 表示转化失败。
- 对于每一个十六进制数字,根据其字符范围计算出其对应的十进制数,并将其加入到 'result' 中。
- 最后判断最后一位是否为 'H' 或 'h',如果不是则返回 -1 表示转化失败。否则返回转化后的整数 'result'。
需要注意的是,这段代码并没有考虑字符串为空的情况,如果传入空字符串将会导致不可预知的错误。
int conv(char hex[]){
int result=0;
int i=0;
while(hex[i]!='\0'){
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;
}
原文地址: https://www.cveoy.top/t/topic/nSek 著作权归作者所有。请勿转载和采集!