找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7071|回复: 9
打印 上一主题 下一主题
收起左侧

51单片机char类型16进制转换10进制,有思路吗?

[复制链接]
跳转到指定楼层
楼主
30黑币
16进制数据存在CHAR数组里面     列如:  char a[0]=0xfa;   我想过把F和A提取出来,然后SUM=15*16^1+10*16^0=250  刚好等于 0XFA 。
但是不知道怎么提取。   对10进制的取余操作不知道对16进制管不管用,求各位大神给点思路。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:220005 发表于 2019-7-20 12:10 | 只看该作者
提供一点思路



上面给了两种方法,但是是将“数值”转换为“字符”。
第一种方法中,把HextoAsc函数中if语句修改一下就好。
第二种方法中,把TabAsc数组中的‘字符’改成‘数值’就好。
多读两遍很容易看懂的!
回复

使用道具 举报

板凳
ID:578917 发表于 2019-7-20 12:12 | 只看该作者
问题已经自己解决。   列如:
char a=0xFA;
char i,j;
i=a%0x10;//结果i=0xA
j=a/0x10;//结果j=0xF
回复

使用道具 举报

地板
ID:375161 发表于 2019-7-20 12:25 | 只看该作者
这样试试怎么样?  b=a&0xf0;   c=a&0x0f;  把原数据认为是二进制数,按位与,分别取前四位和后四位。
回复

使用道具 举报

5#
ID:277550 发表于 2019-7-20 12:28 | 只看该作者

char a=0xfa;
char a1 = a>>4;
char a2 = a&0xf;

其实使用unsigned char 更合适。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

6#
ID:405975 发表于 2019-7-20 12:59 | 只看该作者
问题是10进制在单片机里存储本来就是16进制的,0XFA转化后还是0XFA,有什么意义呢?假如说硬要转换将0X除10,然后得到的商乘10加余数即可。
回复

使用道具 举报

7#
ID:10193 发表于 2019-7-20 13:17 | 只看该作者
0xfa%16和0xfa/16
回复

使用道具 举报

8#
ID:10193 发表于 2019-7-20 13:22 | 只看该作者
0xfa%0x10和0xfa/0x10
回复

使用道具 举报

9#
ID:220355 发表于 2019-7-20 14:49 | 只看该作者
除以10,再对10求余
回复

使用道具 举报

10#
ID:384252 发表于 2019-7-22 11:27 | 只看该作者
楼主给出的数据类型为char,即为有符号类型,char a[0]=0xfa,转换成10进制数应该=-6才对吧?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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