我有一个小数,是以双字16进制形式出现的,例如 XXXX XXXX ,怎么将这个形式的数据转换成10进制的小数?
还有10进制的小数,怎么转换成双字形式的16进制数?

解决方案 »

  1.   

    Option ExplicitPrivate Type DWord
        LoWord As Integer
        HiWord As Integer
    End TypePrivate Type Float
        Value As Single
    End TypeSub Main()
        Dim s As String
        s = HexFloat(0.1)
        Debug.Print s
        Debug.Print Hex2Float(s)
    End SubFunction HexFloat(ByVal Value As Single) As String
        Dim tDW As DWord
        Dim tF As Float
        tF.Value = Value
        LSet tDW = tF
        HexFloat = Right$("000" & Hex(tDW.LoWord), 4) & " " & _
                   Right$("000" & Hex(tDW.HiWord), 4)
    End FunctionFunction Hex2Float(ByVal HexStr As String) As Single
        Dim tDW As DWord
        Dim tF As Float
        tDW.LoWord = CInt("&H" & Left$(HexStr, 4))
        tDW.HiWord = CInt("&H" & Right$(HexStr, 4))
        LSet tF = tDW
        Hex2Float = tF.Value
    End Function
      

  2.   

    16进制转换成10Function HexToBcd(str As String) As Long                
    Dim Length As Integer
    Dim X As String
    Dim i As Long
    str = Trim(str)
    Length = Len(str)
    For i = 0 To Length - 1
    X = Mid(str, Length - i, 1)
    Select Case X
           Case "a", "A"
             HexToBcd = HexToBcd + 10 * (16 ^ i)
           Case "b", "B"
             HexToBcd = HexToBcd + 11 * (16 ^ i)
           Case "c", "C"
             HexToBcd = HexToBcd + 12 * (16 ^ i)
           Case "d", "D"
             HexToBcd = HexToBcd + 13 * (16 ^ i)
           Case "e", "E"
             HexToBcd = HexToBcd + 14 * (16 ^ i)
           Case "f", "F"
             HexToBcd = HexToBcd + 15 * (16 ^ i)
           Case "0" To "9"
             HexToBcd = HexToBcd + Val(X) * 16 ^ i
           Case Else
           'MsgBox "非十六进制数", vbCritical, "信息提示"
           HexToBcd = 0
    End Select
    Next i
    End Function10转换16
    CInt("&H" & str)
      

  3.   

    二进制也一样  把16 换成2 就可以了 只 判断Case 0  case 1