16进制转10进制

2020-01-16 18:34发布

                    我举个例子,我从P0口得到数据temp=0x11;然后把temp变成10进制,目的是为了输出显示,但是在keil软件里面怎么转换呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
孩子莫悲伤
1楼-- · 2020-01-18 07:38
胡子大叔已经解答了!~~
techbaby
2楼-- · 2020-01-18 12:38
呵呵,话说我也经历过这个时期!
canidream
3楼-- · 2020-01-18 15:23
qian=temp/1000;
bai=temp/100%10;
shi=temp/10%10;
ge=temp%10;
chensheng00
4楼-- · 2020-01-18 17:41
 精彩回答 2  元偷偷看……
北小斗
5楼-- · 2020-01-18 19:47
你的问题在于此,0x11赋给了temp,但不代表temp就是十六进制格式的,因为变量在MCU里都是以二进制存储的。由此你在编译器里写"temp = 0x11;"跟“temp = 17”效果是一样的,因为他们都是0b00010001,做运算的时候根本不需要做进制转换,注意是做运算的时候。所以你可以直接用大胡子叔叔的公式,没有任何问题。
如果你是传输数据那就不一样了,假设你要通过串口传输一个十进制(BCD格式)的数,那么你就需要将0x11(0001,0001)转成0x17(0001,0111)之后再发送出去才正确。Understand?
xieguangye2001
6楼-- · 2020-01-18 22:32
本帖最后由 xieguangye2001 于 2012-12-5 15:24 编辑

这个其实是理解数值存储的问题。所谓16进制转10进制是把一个数的各个位提取出来而已。
比如0xff转10进制 我们可以认为输出得到
1. 0x0255      (转BCD码)
2.数组a[3]={2,5,5}
3.gewei =5
   shiwei=5
   baiwei=2

你将输出用于显示到数码管上,他们的意义上一样的。区别在于存储占的空间和代码运算上使用的方便。


temp = 0xff;
temp =255;
是没区别的。

一周热门 更多>