1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| Public Function i3efp(num_in As Single)
Dim s As Integer
Dim F As Long
Dim eh As Variant
Dim fh As Variant
Dim e As Byte
Dim H2B() As String
Dim i3eb As Long
Dim fb As Long
Dim B2H() As String
s = 0
If num_in < 0 Then s = 1
For e = 0 To 255
If 2 * 2 ^ (e - 127) > Abs(num_in) Then Exit For
Next
If e = 0 Then GoSub toosmall
If e = 255 Then GoSub toobig
F = (Abs(num_in) / (2 ^ (e - 127))) - 1
F = 1 * Right(F, Len(F) - 2)
F = (F * 10 ^ -Len(F)) / 2 ^ -23
eh = hex(e)
If Len(eh) < 2 Then eh = "0" & eh
fh = hex(F)
i3eb = s & H2B(eh) '9Bits
fb = Right(H2B(fh), 23)
If Len(fb) < 23 Then fb = String(23 - Len(fb), "0") & fb
i3eb = i3eb & fb '32bits
i3efp = B2H(i3eb)
Exit Function
toobig:
i3efp = String(8, "F")
Exit Function
Return
toosmall:
i3efp = String(8, "0")
Return
Exit Function
Return
End Function
Function H2B(NombreHexa As String)
' Convertit un nombre hexadécimal en nombre binaire
Dim ChaineBinaire As String
Dim ChaineHexa As String
Dim i As Integer
Dim ChaineRetour As String
Dim Position As Integer
ChaineBinaire = "0000000100100011010001010110011110001001101010111100110111101111"
ChaineHexa = "0123456789ABCDEF"
For i = 1 To Len(NombreHexa)
Position = InStr(1, ChaineHexa, Mid(NombreHexa, i, 1)) - 1
ChaineRetour = ChaineRetour & LTrim(Mid(ChaineBinaire, Position * 4 + 1, 4))
Next i
H2B = ChaineRetour
End Function
Function B2H(NombreBin As String)
' Convertit un nombre binaire en nombre hexadécimal
Dim ChaineBinaire As String
Dim ChaineHexa As String
Dim ChaineTemp As String
Dim i As Integer
Dim ChaineRetour As String
Dim Position As Integer
Dim Reste As Integer
ChaineBinaire = "0000000100100011010001010110011110001001101010111100110111101111"
ChaineHexa = "0123456789ABCDEF"
Reste = Len(NombreBin) Mod 4
If Reste <> 0 Then NombreBin = String(4 - Reste, "0") & NombreBin
For i = Len(NombreBin) To 1 Step -4
ChaineTemp = Mid(NombreBin, i - 3, 4)
Position = (8 * Mid(ChaineTemp, 1, 1)) + (4 * Mid(ChaineTemp, 2, 1)) + _
(2 * Mid(ChaineTemp, 3, 1)) + (Mid(ChaineTemp, 4, 1))
ChaineRetour = Mid(ChaineHexa, Position + 1, 1) & ChaineRetour
Next i
B2H = ChaineRetour
End Function |
Partager