我有通讯协议,协议对数的发送和接收是这样规定的?
字节1  字节2 字节3 字节4.....字节15 字节16 字节17
帧标志 地址  命令  数据  ....数据  校验字  结束(回车)
发送和接收都是16进制形式的
但我不知怎样把要发送的数据转换为他要求的16进制形式的
数据字节一共12个
 1    2   3  4  5  6 7 8  9     10 11 12
+/-  X   .  X  X  X X E  +/-   X   X  X
数值 非零             阶码 阶码
符号 数字             标识 符号
为格式化的十进制浮点型
有一个例子是这样的
如25000 格式化为浮点数为+2.5000E+004
转换为16进制是
2BH 32H 2EH 35H 30H 30H 30H 45H 2BH 30H 30H 34H
我怎样能把任一数转换这样的16进制呀???

解决方案 »

  1.   

    hex函数能直接格式化为我要求的格式吗?
      

  2.   

    你先把你接受到的给字节变量,然后再把它保存在变体变量中,最后再用HEX转换就可以了,
      

  3.   

    楼主有没有注意
    2BH 32H 2EH 35H 30H 30H 30H 45H 2BH 30H 30H 34H
    就是'+25000+004'这个字符串的ASCII码
    楼主应该知道怎么转换了
      

  4.   

    其实用mscommon进行通讯的时候,发送命令不一定非要是十六进制的吧?发送字符串也行的!因为计算机会自动把它们转换成二二进制数.所以我觉得你没必要非要发送十六进制数,如果要的话用hex函数转换一样.
    但是我觉得还是发送字符串方便:)
    mscomm1.output="发送的字符串"
      

  5.   

    因为协议对发送的命令有字节要求的,如我举年是17个字节,如果是用字符串发送能达到他的要求吗?我这个还不太懂,请指教!
    我知道
    2BH 32H 2EH 35H 30H 30H 30H 45H 2BH 30H 30H 34H
    就是'+25000+004'这个字符串的ASCII码
    我的问题是,我怎么把任一个数给格式化为这个格式的浮点形式呀
    +X.XXXXE+XXX 呀?
      

  6.   

    我的问题是,我怎么把任一个数给格式化为这个格式的浮点形式呀
    +X.XXXXE+XXX 呀?
    那你得自己写个函数了,不会太难的!我做通讯的项目的时候也是自己写的数据格式转换的函数