Private Function ByteToSingle(ByVal tab() As Byte) As Single
Dim Reel As Single = 0
Dim signe As SByte = IIf((tab(0) >> 7) = 1, -1, 1)
Dim exposant As Integer = (((tab(0) << 1) >> 1) * 2) + (tab(1) >> 7)
Dim mantisse As Single = ((((tab(1) << 1) >> 1)) * 65536) + (tab(2) * 256) + tab(3)
If mantisse = 0 And exposant = 0 Then
Reel = 0
Return Reel
Else
If mantisse = 0 Then
If signe = 1 Then
Reel = Single.PositiveInfinity
Else
Reel = Single.NegativeInfinity
End If
Return Reel
Else
mantisse = IIf(exposant = 0, mantisse / (2 ^ 23), (mantisse / (2 ^ 23)) + 1)
exposant -= 127
If exposant = 128 Then
Reel = Single.NaN
Return Reel
Else
Reel = signe * (mantisse * (2 ^ exposant))
Return Reel
End If
End If
End If
End Function