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

将串口接收到的十六进制数据转为十进制

1.十六进制转十进制代码

代码如下:

#include <stdio.h>
#include <string.h>
#include <ctype.h>// 十六进制转十进制的函数
int hex_to_decimal(const char *hex_str) 
{int decimal_num = 0;int len = strlen(hex_str);for (int i = 0; i < len; i++) {char ch = hex_str[i];if (isdigit(ch)) {// 如果是数字字符,减去字符 '0' 得到对应的数值decimal_num = decimal_num * 16 + (ch - '0');} else if (ch >= 'A' && ch <= 'F') {// 如果是大写字母 A - F,减去字符 'A' 并加上 10 得到对应的数值decimal_num = decimal_num * 16 + (ch - 'A' + 10);} else if (ch >= 'a' && ch <= 'f') {// 如果是小写字母 a - f,减去字符 'a' 并加上 10 得到对应的数值decimal_num = decimal_num * 16 + (ch - 'a' + 10);}}return decimal_num;
}

实现效果:

2.对串口接收数据进行处理

如过将上面代码直接移植到我们的工程文件中,对串口接收到的十六进制数直接进行处理,是不会成功的。因为上面十六进制转十进制函数传入的参数是字符串,而我们串口接收到的是十六进制数。所以还需有一个将十六进制数转为字符串的函数,这样才能实现将串口十六进制数转为十进制数。

十六进制转为字符串函数调用C语言中的sprintf函数便可实现。

int HextoDec(unsigned char hex_num)
{char hex_str[3];    //存储转换后的字符串int dec;            //dec存储转换后的十进制sprintf(hex_str, "%02X", hex_num);    //将十六进制数hex_num转为字符串,存储在hex_str中dec = hex_to_decimal(hex_str);
} 

要将串口十六进制转为十进制,只需要直接调用int HextoDec(unsigned char hex_num)即可。


http://www.mrgr.cn/news/94327.html

相关文章:

  • ⭐算法OJ⭐汉明距离【位操作】(C++ 实现)Hamming Distance
  • 【vue + JS】OCR图片识别、文字识别
  • 《基于大数据的营养果蔬推荐系统的设计与实现》开题报告
  • 在 Windows 上快速部署 OpenManus:从安装到运行
  • 计算机网络——DHCP实验
  • python -面试题--算法
  • RGV调度算法(三)--遗传算法
  • LeetCode 解题思路 15(Hot 100)
  • 独立开发记录:使用Trae和Cloudflare快速搭建了自己的个人博客
  • ES6回顾:闭包->(优点:实现工厂函数、记忆化和异步实现)、(应用场景:Promise的then与catch的回调、async/await、柯里化函数)
  • 【C#学习笔记04】C语言格式化输出
  • 深度剖析 Doris 数据倾斜,优化方案一网打尽
  • 【二分查找 寻找首端】P3718 [AHOI2017初中组] alter|普及+
  • uniapp实现 uview1 u-button的水波纹效果
  • 使用memmove优化插入排序
  • 新闻网页信息抽取
  • JVM 垃圾回收器的选择
  • 广播机制(Broadcasting)
  • 项目组织管理类型-职能式组织和矩阵式组织的区别
  • HOT100——二叉树篇Leetcode236. 二叉树的最近公共祖先