十六进制转十进制C语言代码实现
本文章主要讲解:将输入的十六进制数转化为十进制数的C语言代码实现过程知识较为基础若有不足请各位多多指教首先给出完整实现代码#includestdio.h #includestdlib.h #includestring.h #includemath.h #define weishu 8 int main() { int a 0; int result 0; int b 0; char hex[weishu]; printf(Please input:);//这里用来引导用户输入一个十六进制数字 again: scanf(%s, hex);//用scanf函数来接收十六进制数字 int len strlen(hex);//此处获取数组hex的字符长度 int len1 len; len len - 1; len1 len1 - 1; int num len1; while (len -1) { if (hex[len] 0 hex[len] 9) hex[len] hex[len] - 0; else if (hex[len] a hex[len] f) hex[len] hex[len] - a 10; else if (hex[len] A hex[len] F) hex[len] hex[len] - A 10; else { printf(Input error,please re-enter:); goto again; } len--; } int x len1 1; if (x % 2 0) { int len2 len1; int x2 0; int x1 x / 2; for (x1 ; x1 0;x1--) { int mid hex[x2]; int mid1 hex[len2]; hex[len2]mid; hex[x2] mid1; x2; len2--; } } else { int len3 len1; int x3 0; int x4 (x 1) / 2; for (x4;x4 0;x4--) { int mid2 hex[x3]; int mid3 hex[len3]; hex[len3] mid2; hex[x3] mid3; x3; len3--; } } while (len1-1) { result result hex[len1] * pow(16, len1); len1--; } printf(Ouput:%d, result);//输出十进制结果 return 0; }一些关于以上代码的相关知识1.十六进制数字的相关知识十六进制数字逢16进1然而如果用纯数字的话在某一位数到达‘ 9 ’的时候下一位如果写成‘10’会产生歧义因此在‘9’之后十六进制数字用字母来表示该位数的数字10 --a或A11 --b或B12 --c或C13 --d或D14 --e或E15 --f或F例如用十六进制数字表示十进制数字 ‘ 31 ’311615则15 --f或F剩下的16进1则用16进制表示为1f或1F2.对于strlen函数例如输入’ 1f ’则此时hex数组中所含字符则为’1’ , ’ f ’ 以及 ‘\0’又由于strlen函数不计算 ‘/0’因此strlen(hex)2;3.十六进制数字存入数组并转化为十进制数字转化代码实现过程#define weishu 8 char hex[weishu]; scanf(%s, hex);//用scanf函数来接收十六进制数字 int len strlen(hex);//此处获取数组hex的字符长度 int len1 len; len len - 1; len1 len1 - 1; while (len -1) { if (hex[len] 0 hex[len] 9) hex[len] hex[len] - 0; else if (hex[len] a hex[len] f) hex[len] hex[len] - a 10; else if (hex[len] A hex[len] F) hex[len] hex[len] - A 10; else { printf(Input error,please re-enter:); goto again; }首先需要知道字符的加减是用对应的ASCII码值进行加减的。通过这一点我们就可以知道当某一位数只在0~9之间时用该位数的字符减去‘0’即可得到十进制的该位数字。然而当某位数是大于9的字母时用常规的减‘0’就不能算出对应的十进制数字了。这时就得用其他方法来进行计算了。else if (hex[len] a hex[len] f) hex[len] hex[len] - a 10; else if (hex[len] A hex[len] F) hex[len] hex[len] - A 10;这里给出了当位数为字母时将其转化为十进制数字的方法减去‘a’或’A’再加10由此就将一个十六进制数字的各位数转化为对应十进制并存入数组了4.数组相关知识数组的编号由0开始,以’ 1f 为例此时数组hex里各编号字符的情况为char hex[8]{‘1’,‘f’,‘\0’,‘\0’,‘\0’,‘\0’,‘\0’,‘\0’} (其余未初始化的值都默认为’\0’)则此时hex[0]‘1’hex[1]‘f’最高编号为1而此时计算的字符长度为2因此将len-1以便能够正确计算5.转化为十进制时转化正常位数顺序方法int x len1 1; if (x % 2 0) { int len2 len1; int x2 0; int x1 x / 2; for (x1 ; x1 0;x1--) { int mid hex[x2]; int mid1 hex[len2]; hex[len2]mid; hex[x2] mid1; x2; len2--; } } else { int len3 len1; int x3 0; int x4 (x 1) / 2; for (x4;x4 0;x4--) { int mid2 hex[x3]; int mid3 hex[len3]; hex[len3] mid2; hex[x3] mid3; x3; len3--; } }这里通过检测输入十六进制数字的位数将其进行倒序并存入数组由此进行后续计算。6.十六进制转十进制相加算法while (len1-1) { result result hex[len1] * pow(16, len1); len1--; } printf(Ouput:%d, result);//输出十进制结果这里通过将对应位数数字乘以16的对应次方将各结果相加相加结果就是对应的十进制结果了

相关新闻

Godot VisibleOnScreenNotifier2D 实战指南:基于渲染剔除的 2D 屏幕可见性检测

Godot VisibleOnScreenNotifier2D 实战指南:基于渲染剔除的 2D 屏幕可见性检测

文档教程游戏开发 【免费下载链接】godot-docs Godot Engine official documentation 项目地址: https://gitcode.com/GitHub_Trending/go/godot-docs 点击查看 免费下载 VisibleOnScreenNotifier2D 是 Godot Engine 官方文档(本仓库 godot-docs&#x…

2026/10/13 10:20:50 阅读更多 →
HANA数据库HA高可用双机架构原理

HANA数据库HA高可用双机架构原理

HA双机架构的核心概念与设计思路拆解1. 主流HA模式:共享存储 vs. 存储复制HANA HA主要有两种实现模式,选择哪一种,取决于你的基础设施策略和成本考量。共享存储架构(Shared Storage) :这是较为传统和经典的…

2026/10/13 10:19:49 阅读更多 →
Ubuntu 24.04修改源

Ubuntu 24.04修改源

Ubuntu 24.04 换源和以前版本最大的区别在于:默认不再主要使用 /etc/apt/sources.list ,而是使用 DEB822 格式的/etc/apt/sources.list.d/ubuntu.sources 。 一、确认当前版本 先确认系统确实是 24.04: lsb_release -a输出中 Release 应为…

2026/10/13 10:19:49 阅读更多 →

最新新闻

MySQL慢查询定位与索引设计:EXPLAIN与B+树实战全解析

MySQL慢查询定位与索引设计:EXPLAIN与B+树实战全解析

接手线上业务系统这几年,最让我头疼的问题之一就是MySQL慢查询。明明功能开发完了、测试也过了,一到流量高峰期,几个核心接口突然就卡了几秒,数据库CPU飙高,紧接着就是连接数打满、应用报错。排查下来,十有…

2026/10/13 11:00:03 阅读更多 →
ASIO2WASAPI:让普通声卡也能跑低延迟ASIO的桥接实践

ASIO2WASAPI:让普通声卡也能跑低延迟ASIO的桥接实践

简介:ASIO2WASAPI 是面向 Windows Vista 及以上系统的开源音频驱动方案,为音乐制作人与音频工程师提供硬件无关的 ASIO 支持。它借助中间层将 ASIO 协议和 Windows 原生 WASAPI 结合,用独占模式逼近硬件极限延迟,解决无专用音频接…

2026/10/13 11:00:03 阅读更多 →
JumpServer统一纳管PostgreSQL:从资产配置到安全审计的完整实践

JumpServer统一纳管PostgreSQL:从资产配置到安全审计的完整实践

搞了这么多年运维,数据库资产一直是权限管理里最让人头疼的一环。尤其PostgreSQL这种逻辑库多、角色权限细的系统,直接让人连生产库,账号密码满天飞不说,出事了你连谁干的都查不到。前阵子刚把一套PostgreSQL完整接进了JumpServer…

2026/10/13 11:00:03 阅读更多 →
MySQL Workbench 从下载到实战:安装避坑、连接配置与日常管理技巧

MySQL Workbench 从下载到实战:安装避坑、连接配置与日常管理技巧

最早学数据库那会儿,我一直在黑窗口里敲命令。建表、导数据、改权限全靠手打,一条语句写错就得整条回滚,效率低不说,眼睛也是真遭罪。后来换了 MySQL Workbench,整个体验完全不一样:不用背那么多命令&#…

2026/10/13 11:00:03 阅读更多 →
快速搭建规范开源项目:从零构建可协作可维护的GitHub仓库

快速搭建规范开源项目:从零构建可协作可维护的GitHub仓库

1. 为什么“快速搭建规范开源项目”这件事,比你想象中更值得花时间 “快速在GitHub搭建一个规范的开源项目(一)”——这个标题里藏着三个被新手普遍低估的关键词: 快速 、 规范 、 (一) 。不是“建个…

2026/10/13 11:00:03 阅读更多 →
用帕累托图做线上问题优先级排序:从频次统计到加权决策

用帕累托图做线上问题优先级排序:从频次统计到加权决策

作为负责线上稳定性的工程师,我每天到工位后的第一件事,不是看代码,而是先扫一眼昨夜的问题清单。以前团队排故障优先级基本靠嗓门,谁在群里吼得凶就修谁的;直到我们用帕累托图把问题频次和影响摊开做排序,…

2026/10/13 10:58:59 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →