找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 666|回复: 6
收起左侧

如何将单片机串口接收的ASCII码转成16进制?

[复制链接]
ID:761917 发表于 2022-12-1 19:46 | 显示全部楼层 |阅读模式
有没有大佬知道如何将单片机串口接收的ASCII码转成16进制
回复

使用道具 举报

ID:883242 发表于 2022-12-1 20:53 | 显示全部楼层
  1. ch>'9'?ch-55:ch-'0'
复制代码
回复

使用道具 举报

ID:94031 发表于 2022-12-1 20:55 | 显示全部楼层
串口接收的肯定是2进制(16进制),要变成ASCII码要程序处理,你不处理就是16进制。
回复

使用道具 举报

ID:161164 发表于 2022-12-1 21:12 | 显示全部楼层
如你发的是"A5"
哪么中断里的代码就是:
Temp*=16;
Temp=SBUF-'0';
回复

使用道具 举报

ID:384109 发表于 2022-12-1 23:04 | 显示全部楼层
ASCII分大小写和数字,判断后减去对应的首字母或数字即可
回复

使用道具 举报

ID:752974 发表于 2022-12-2 08:35 | 显示全部楼层
仅供参考
//==============================================================
//把字符串转换成整型数
//--------------------------- OK -----------------------------------
int a_to_int(uint8_t *str)
{
int temp = 0;
uint8_t  *ptr = str;  //ptr保存str字符串开头
   
     if (*str == '-' || *str == '+')  //如果第一个字符是正负号
        str++;//则移到下一个字符
     while(*str != 0)
       {
         if ((*str < '0') || (*str > '9'))  //如果当前字符不是数字
             break;                         //则退出
         temp = temp * 10 + (*str - '0'); //如果当前字符是数字,则转换成数字
         str++;      //移动数据指针到下一个字符
       }   
     if (*ptr == '-')     //如果字符是以'-'开头,则转换成相反数
         temp = -temp;
     return temp;
}
//========================================================================
回复

使用道具 举报

ID:77589 发表于 2022-12-2 09:15 | 显示全部楼层
munuc_w 发表于 2022-12-2 08:35
仅供参考
//==============================================================
//把字符串转换成整型数

如果是想把接收到的十六进制字符串转换成数字,这就是正解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表