找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

两个char数据合并为一个int数,在1602上显示结果和直接赋值给int,在1602屏上显示错误

查看数: 2948 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-7-20 08:09

正文摘要:

本帖最后由 wis98 于 2019-7-20 08:16 编辑 我将一个int变量直接赋值并在1602上显示正常,而将两个char数据合并为一个int数值时,在1602屏上却显示出3106,不知错在那,百度了好多左移方法试验,结果一样。 下 ...

回复

ID:33544 发表于 2019-7-20 12:32
znz43a 发表于 2019-7-20 09:58
显示的10进制数1234,在单片机中都是以2进制存储的,16进制是04D2H。
而b=12中,10进制数 12 在 b中是存储 ...

谢谢大师指点俺
ID:33544 发表于 2019-7-20 12:31
谢谢,我回头再试试看
ID:332444 发表于 2019-7-20 11:56
        unsigned int a;
        unsigned char b=12;
        a=a+b*100;
ID:466578 发表于 2019-7-20 10:39
不能这样移位,这是对应16进制的合并
0x0c(12)*256+0x22(34)=0x0c22(3106)

而i10进制合并是这样的
12*100+34=1234

------------------------
a=b*100+c
ID:378182 发表于 2019-7-20 09:58
本帖最后由 znz43a 于 2019-7-20 11:03 编辑

显示的10进制数1234,在单片机中都是以2进制存储的,16进制是04D2H。
而b=12中,10进制数 12 在 b中是存储为 0CH
   c=34中,10进制数 34 在 b中是存储为 22H
所以  b移位8位放入高8位,c放低8位的结果是 0C22H,转换成10进制就是 3106
所以不能用移位,要用 bX100+c 计算

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

Powered by 单片机教程网

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