不好意思,昨天问完以后发现,大家给的应该是对数组中某一个值去浮点数的方法。
我现在要的是将整个数组作为一个浮点数的方法。
我从通信中返回的值放在buffer()这个byte数组里面,从buffer(3)到buffer(8)都是连续的数据位,现在要将这些数据位代表的数值转换成浮点数,请问如何转换。

解决方案 »

  1.   

    //从buffer(3)到buffer(8)都是连续的数据位这才6个字节,你对应的浮点数的类型要么是4个字节,要么是8个字节,6个字节的数据是你自己定义的吗?
      

  2.   

    你 buffer() 里面究竟是什么格式的内容?
      

  3.   

    是通过modbus返回的
    一般buffer(0)是机器地址
    buffer(1)是指令位
    buffer(2)是数据长度
    buffer(3)……buffer(N)是数据位
    buffer(n+1),buffer(b+2)是校验吗
      

  4.   

    '这里把bytTest(7)数组转化为Double型
    Option Explicit
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub Command1_Click()
    Dim bytTest(7)  As Byte
    Dim f As Double, i As Integer
    For i = 0 To 7
        bytTest(i) = &H0
    Next
    CopyMemory f, bytTest(0), 8
    Debug.Print f
    End Sub
      

  5.   

    如果buffer(3)—buffer(10)是浮点数Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Dim f As DoubleCopyMemory f, buffer(3), 8
      

  6.   

    不过需要注意的是 使用CopyMemory 后数据的编码方式
      

  7.   

    搂主用Modbus是和SIMENS的PLC通讯吗?可以给小弟一点资料不?我的QQ是68064375,望赐教.
      

  8.   

    up 
    用CopyMemory 得出来的是*E*的形式的。如何改用为常用的表现形式呢?