怎样将一个16进制的数如87FCFFFF转换成一个浮点小数多谢大家,有这样的函数吗? 

解决方案 »

  1.   

    比如dim x as single
    aa=&H87FCFFFF然后呢?我要是直接显示的话,还是一个整数
    怎么变成原来的小数形式呢? 
      

  2.   

    这里有一个,搜索到的,没看懂在模块文件Hexedit.bas中写入CopyMemory的声明Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)'在窗体文件中写入Function StrhextoSng(strhex As String) As String
        Dim l As Long
        Dim f As Single
        Dim s As String    l = Val("&H" & strhex)
        CopyMemory f, l, 4
        s = Format(f, "0.000")
        StrhextoSng = s
    End Function
      

  3.   

    还有这个肯定能实现,但是太麻烦了,有没有简单点的Private Sub Form_Load()
    Dim a As Single
    a = &H42798000
    MsgBox (ToS("42798000"))
    End Sub
    Function ToS(T0)
    Ta = To2(Val("&H" & Mid(T0, 1, 2))) + To2(Val("&H" & Mid(T0, 3, 2))) + To2(Val("&H" & Mid(T0, 5, 2))) + To2(Val("&H" & Mid(T0, 7, 2)))
    If Left(Ta, 1) = "0" Then Tf = 1 Else Tf = -1
    Tz = Val(To10(Mid(Ta, 2, 8))) - 127
    ToS = Tf * To10("1" & Mid(Ta, 10, Tz)) + Tox(Mid(Ta, 10 + Tz))
    End FunctionFunction To2(T10)
    Do While T10 > 0
       To1 = Mid("01", 1 + T10 Mod 2, 1) + To1
       T10 = T10 \ 2
    Loop
    To2 = Right(String(8, "0") + To1, 8)
    End FunctionFunction To10(T2)
    T0 = 1
    Tl = Len(T2)
    For i = 1 To Tl
        T1 = T1 + T0 * Val(Mid(T2, Tl - i + 1, 1))
        T0 = T0 * 2
    Next
    To10 = T1
    End FunctionFunction Tox(T2)
    T0 = 1 / 2
    For i = 1 To Len(T2)
        T1 = T1 + T0 * Val(Mid(T2, i, 1))
        T0 = T0 / 2
    Next
    Tox = T1
    End Function
      

  4.   

     我也是遇到小数的问题,我是用死办法,将小数点直接插入,显示出来的,不过我的问题是:我不太确定小数点有时候到底应该放在哪?问题可能有点白,的确是这样的,比如下位机给VB返回一个数据,代表某个变量或者参数值,传递过程用的都是二进制数了,没有小数点,VB从哪里知道小数点应该放在什么地方?