[Gambas-user] Hex string to float

Ron ron at ...1740...
Fri Dec 12 14:11:42 CET 2008


Ron schreef:
>
> Hi,
>
> Anyone have a routine to convert a hex string to a float?
> Like these:
> B6FBEB3A = -0.000007507766895287204
> 3C5D2104 = 0.01349664106965065
>
> Find lots of vb code, but those use copymem functions.
>
> Thanks in advance!
>
To answer my own question:

I ended up with this so far:

PUBLIC SUB Main()

  PRINT HexToFloat("3C5D2104")
  PRINT HexToFloat("B6FBEB3A")

END

PUBLIC FUNCTION HexToFloat(sHex AS String) AS Float

  DIM sTemp AS String
  DIM iSign, iExponent AS Integer
  DIM fTemp, fMant, fResult AS Float

  PRINT "Value = " & sHex
  ' calculate sign
  sTemp = Mid(sHex, 1, 2)
  fTemp = Val("&H" & sTemp) AND &H80
  iSign = IIf(fTemp = 128, -1, 1)
  PRINT "Sign = " & iSign

  ' calculate exponent
  sTemp = Mid(sHex, 1, 3)
  fTemp = Val("&H" & sTemp) AND &H7F8
  iExponent = fTemp / 2 ^ 3 - 127
  PRINT "Exponent = " & iExponent

  ' calculate mantissa
  sTemp = Mid(sHex, 3, 6)
  fTemp = Val("&H" & sTemp) AND &H7FFFFF
  fMant = (fTemp / 2 ^ 23) + 1
  PRINT "Mantissa = " & fMant

  fResult = iSign * fMant * 2 ^ iExponent

  RETURN fResult

END

Value = 3C5D2104
Sign = 1
Exponent = -7
Mantissa = 1.727570056915

Result: 0.01349664107

Value = B6FBEB3A
Sign = -1
Exponent = -18
Mantissa = 1.968116044998

Result: -7.507766895287E-6

Regards,
Ron_2nd





More information about the User mailing list