我现在在做一个控制软件的上位机程序。在VC下需要和单片机进行串口通信,要去数据都是十六进制的。想请教各位小数的十六进制怎么来转换。例如12.5,在VC中一个double型的数占4个Byte,可不可以利用内存直接读取在内存中的4个Byte呢,还是要把12.5变成4个字符,然后分别表示每个字符的ASCII码的十六进制呢?如果分别把12.5的整数部分和小数部分用十六进制来表示,怎么区分整数部分和小数部分呢?要求小数的位数必须一致吗?这样12.5所用的Byte不是很多了吗?实在有点不清楚,希望各位大侠给点意见,非常感谢!

解决方案 »

  1.   

    vc中的数据类型不能移植到单片机上.你应该去最长的长度(不是vc中的double)
    作为标准.你可以与开发单片机的人进行沟通,你们定一个协议即可。
      

  2.   

    看看需要几位小数,先转成整数再传送啊还有一个办法就是直接从ASCII码
    比如 12.5 就传关 0x31 0x32 '.' 0x35  当然,这要两边统一协议
      

  3.   

    最好先将double型转为4个字节表示的BYTE型然后发送最后在单片机上接受4个字节,使用double *指向它的首地址就可以得到double型的数据了不必要考虑有多少位小数