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

发布时间:2026/10/13 10:20:57

十六进制转十进制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的对应次方将各结果相加相加结果就是对应的十进制结果了
延伸阅读

更多相关文章

2026/10/13 10:20:57

Java校园图书馆座位预约系统:架构解析与核心逻辑实现

简介:这套基于Java技术开发的校园图书馆座位预约系统毕业设计程序,主要面向计算机软件、信息管理等专业的毕业设计或课程设计场景,也同样适合正在自学Java Web开发、希望参考完整项目提升动手能力的入门者。资源包大小约12.16MB,内…

2026/10/13 10:20:57

Windows密码忘了?自制U盘工具几秒清除SAM密码,保留全部数据

前阵子一位朋友抱着笔记本来找我:Windows 登录密码彻底想不起来了,里面还有一堆没来得及备份的期末资料,急得差点直接格式化重装。其实这种情况完全不用走到重装那一步。我写了一个免费的 BIOS 级小工具,做成启动 U 盘后插在电脑上…

2026/10/13 12:31:30

基于图的图像分割算法:Felzenszwalb论文笔记与超像素实现详解

看起来输入内容里缺少了必要的项目正文、关键词和摘要描述。为了给你生成一篇贴合标题、可直接复现的论文笔记类博文,麻烦把这几项信息补全。你可以按这个格式发给我:项目标题: Efficient Graph-Based Image Segmentation 论文笔记 项目正文:&#xff08…

2026/10/13 12:31:30

openGauss数据库实验指南:从环境搭建到JDBC连接全解析

简介:一份完整的《zzu数据库实验报告书》,面向计算机科学与技术、软件工程专业正在学习《数据库系统原理》课程的学生,覆盖认识DBMS、创建数据库/表/索引、交互式SQL语句、视图、完整性控制、安全性控制、事务与并发控制、数据库备份与恢复、…

2026/10/13 12:31:30

PyCharm安装激活全流程:从下载到稳定使用的避坑指南

简介:这份资源是一份面向Python初学者与开发环境搭建新手的PyCharm安装教程文档,重点解决IDE下载、安装配置及许可证激活过程中容易卡壳的问题,适合刚接触Python、需要快速跑通开发环境的学生与转行开发者参考。资源包内共1个docx文档&#x…

2026/10/13 12:31:30

微信小程序毕设实战:Spring Boot+MySQL在线阅读系统

简介:这是一套面向计算机专业本科生的微信小程序毕业设计完整实现方案,适用于课程设计、毕设选题与全栈开发能力训练。系统采用JavaMySQLB/S架构,前端为微信小程序,后端提供管理后台,覆盖小说信息维护、用户注册管理及…

2026/10/13 12:31:30

Python实现微博自动化:模拟登录、发博与评论的完整指南

简介:自动发布微博并自动回复评论的Python脚本包,面向需要微博自动化运营的学生、站长及开发者,基于HTTP接口实现,适合具备Python基础、想快速搭建个人微博机器人的读者。资源压缩包共4个文件,包含2个Python脚本、1个M…

2026/10/13 12:26:28

Eclipse Navigate菜单全解析:从定位到跳转的快捷键指南

很多人在 Eclipse 里写代码,处理得最顺的是输出代码,最抓狂的往往是找代码。你大概也有过这种时刻:一个类名明明见过,却要在 Project Explorer 里翻半天;一个方法跳转进去,明明是接口签名,实现还…

2026/10/13 5:19:27

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/12 12:01:26

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/12 12:54:07

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/13 0:04:41

基于Triton部署YOLO目标检测:从训练脚本到线上服务

简介:这份资源面向希望将目标检测模型落地到生产环境的深度学习开发者与算法工程师,聚焦于用 Triton Inference Server 部署 YOLOv9 的完整实战方案,解决从训练权重到线上推理服务之间的工程化难题。压缩包共 16 个文件,约 886KB&…

2026/10/13 0:04:41

手把手教你云端部署Qwen-Image-2.1:从GPU选型到在线文生图服务

Qwen-Image-2.1 这个开源的图像生成模型,最近在内容创作和 AI 应用圈子里热度相当高。它属于通义 Qwen 系列里的视觉生成分支,让我眼前一亮的是它对中文长文本的理解能力——以前用那些老方案生成带中文文字的图,十个里九个是“乱码印刷体”&…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑