单片机C语言与电脑通信,10进制与16进制怎么转换

比如向电脑发送0xff01,表示温度为16°,
向电脑发送0xfe01,表示湿度为16%,
请问怎么将10进制转换为16进制,便于通信

看你的例子知道单片机和电脑通信的协议格式为 类型:数值;
ff表示温度,01表示16;fe表示湿度,01表示16。
你问的问题估计就是后边这个自己的转化问题,自己写个小公式就可以转化,不用纠结于是几进制,直接使用就可以,反正都是数,作为unsiged char时处理的时候一样。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-20
你这个不是进制转换的问题,单片机定义的协议就是这样的,你根据协议把相应的值算出来不得了
0xff01 温度为16°
0xfe01 湿度为16%
单片机的协议定义那几位是有效的?如何分辨温度和湿度?
第2个回答  推荐于2016-01-03
16进制 表示方式 0~~9 A~~F (A表示11 F表示15)
计算方式
第N位 乘以 16的N-1次方
例子
12F
=1*16^2+2*16^1+15*16^0
=256+32+15
=303
第3个回答  2012-02-20
== 计算机里面都是十六进制表示数的(2进制的缩写)。你看到10进制只是输出格式不一样而已。。。。
单片机c和一般的c没多大区别。所以你只需要printf("%d",变量名字)即可.(十六进制是%x)
可能单片机语法有些区别,如uart_printf,但只要你去看他的定义,发现他是一个宏,取别名便于程序可读性而已。
相似回答