单片机C语言十六进制转BCD码

我写了一个十六进制转BCD码的程序 思路是取16进制高位乘16,低位直接加过去。因为我用这个程序模块来转换DHT11温湿度采集的数据,所以都是100以内。但是得到的结果总是不对。。求高人指点

你不应该写16进制转BCD码的程序,你应该写10进制转BCD码的程序,
例如 36—>0x36 这就是10进制转BCD码,
而你所做的16进制转BCD码是这样的:0x36—>0x36追问

有没有例子什么的 不是很理解 不过还是谢谢你 。

追答

例如你要转换的数都是小于100的,

DECdata=(i/10%10)*0x10;
DECdata=DECdata+(i%10);
return DECdata;

温馨提示:答案为网友推荐,仅供参考
相似回答