当前位置: 首页 > article >正文

C语言实现十六进制转十进制

代码

#include <stdio.h>
#include <string.h>
#include <ctype.h>

// 十六进制转十进制的函数
int hexToDec(const char* hex) {
    int len = strlen(hex);
    int decimal = 0;
    int base = 1;

    // 从十六进制字符串的最后一位开始处理
    for (int i = len - 1; i >= 0; i--) {
        char digit = hex[i];
        int value;

        // 如果是数字字符(0 - 9)
        if (isdigit(digit)) {
            value = digit - '0';
        }
        // 如果是大写字母字符(A - F)
        else if (isupper(digit)) {
            value = digit - 'A' + 10;
        }
        // 如果是小写字母字符(a - f)
        else if (islower(digit)) {
            value = digit - 'a' + 10;
        }
        else {
            // 遇到非十六进制字符,返回错误值
            return -1;
        }

        // 累加当前位的值
        decimal += value * base;
        // 更新基数
        base *= 16;
    }

    return decimal;
}

int main() {
    const char* hex = "19";
    int decimal = hexToDec(hex);

    if (decimal == -1) 
    {
        printf("输入的不是有效的十六进制字符串。\n");
    }
    else {
        printf("十六进制 %s 转换为十进制是 %d。\n", hex, decimal);
    }

    return 0;
}

实现效果:


http://www.kler.cn/a/583989.html

相关文章:

  • 分布式事务中XA 事务 和 两阶段提交(2PC)应该如何理解?
  • NineData 社区版:从 MySQL 到 TiDB 数据复制新选择
  • 网络安全反渗透 网络安全攻防渗透
  • 【javaEE】文件操作--io
  • 使用mybatis-plus自定义分页实现一对多的分页功能
  • Unity引擎架构介绍及代码示例
  • Nature最新报道:分析四大主流AI工具、性能测评、推荐使用场景
  • Vim忍者速成秘卷:让你的键盘冒出残影の奥义
  • 如何通过ibd文件恢复MySql数据
  • 鸿蒙编译框架插件HvigorPlugin接口的用法介绍
  • 蓝桥杯备考:数据结构堆之 除2!
  • STM32Cubemx-H7-9-串口接受不定长度数据并识别
  • 解决 VSCode SSH 连接报错:“REMOTE HOST IDENTIFICATION HAS CHANGED” 的问题
  • Nginx 多协议代理功能(Nginx Multi Protocol Proxy Function)
  • windows11 LTSC 24h2 访问NAS问题的安全高效解决
  • C语言:计算并输出三个整数的最大值 并对三个数排序
  • 图解AUTOSAR_CP_ServiceDiscovery
  • Unix 域套接字(本地套接字)
  • NLP常见任务专题介绍(4)-ConditionalGeneration和CasualLM区别
  • 关于Playwright和Selenium 的区别和选择