IEEE-754 - Conversion 32-bits vers Double

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 430 fois - Téléchargée 8 fois

Contenu du snippet

Private Function IEEE754_32(ByRef HexValue() As Byte) As Double
Dim i As Long
Dim nSign As Integer
Dim nExponent As Double
Dim nMantissa As Double
Dim nPow As Long
Dim nValue As Long
    If CBool(HexValue(0) And 128) Then
        nSign = -2
    Else
        nSign = 2
    End If
    nExponent = (HexValue(0) * 2) - CBool(HexValue(1) And 128) - 127
    nPow = 1
    For i = 1 To 3
        If i = 1 Then
            nValue = (HexValue(1) And &H7F)
        Else
            nValue = HexValue(i)
        End If
        If nValue Then
            nMantissa = nMantissa - CBool(nValue And 128) * 2 ^ (nPow - 1) - _
                                    CBool(nValue And 64) * 2 ^ (nPow - 2) - _
                                    CBool(nValue And 32) * 2 ^ (nPow - 3) - _
                                    CBool(nValue And 16) * 2 ^ (nPow - 4) - _
                                    CBool(nValue And 8) * 2 ^ (nPow - 5) - _
                                    CBool(nValue And 4) * 2 ^ (nPow - 6) - _
                                    CBool(nValue And 2) * 2 ^ (nPow - 7) - _
                                    CBool(nValue And 1) * 2 ^ (nPow - 8)
        End If
        nPow = nPow - 8
    Next
    IEEE754_32 = nSign ^ nExponent * (1 + nMantissa)
End Function By Renfield

Compatibilité : VB6, VBA

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.