ascii进制转16进制单片机

c语言:单片机串口接收到ASCII如何转成16进制,如ASCII码 ‘1’=0x01;ASCII "11"=0X0B ;ASCII ''16''=0X10...等等的16进制。

51单片机接收到的都是ASCII码,你可以当16进制,也可以当2进制来使用。再单片机内部运算的时候不用转换;
但是某些场合,比如你把得到的数据发送到上位机去,想在上位机看到的是10进制就需要进行处理了。一般的串口助手都显示16进制的数据,所以单片机直接发送给上位机就行。追问

我是要把转成来是数据进行处理,串口一般只是单字节转换的。比如我输入1,1ASCII码串口接收到的是0x31,0x31;可是我是想变成0x0b而不是0x31,0x31

追答

哦...这个意思啊。通常的串口助手不支持10进制数的发送,你想发送“1,1”得到十进制11的效果,就必须在单片机里写算法才行,比如uchar A,B;然后用A、B分别装入你发来的数值,然后用与、或等运算把高低位放在一个字节里,然后再从单片机里发回串口就应该能得到你想要的效果了。

追问

我已解决,不过还是谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-31
将收到的ascii字符做成字符串,然后执行atoi函数,就能将字符串转换为数字了,比如“1234”就转成数字0x4d2。
第2个回答  2013-07-30
单片机的接收到的是ascii码!例如:是1的话,就是0x31,那么转换成0x01!要不你就需要自己加一个判断!如果是‘1’怎么办!如果是‘11’怎么办!这样写!
相似回答