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;
}

函数功能:

  1. 接收一个以'H'或'h'结尾的16进制字符串作为参数。
  2. 检查字符串长度是否超过6位或不足1位。
  3. 检查字符串中每个字符是否为有效的16进制字符(0-9、A-F或a-f)。
  4. 将每个字符转换为相应的十进制值,并进行累加计算。
  5. 检查最后一位是否为'H'或'h'。
  6. 返回计算得到的十进制整数,如果输入格式不正确,则返回-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
C语言函数实现16进制字符串转换为十进制整数

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

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