home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 4_2005-2006.ISO / data / Zips / AAA_SNMP_O1997295282006.psc / ConvertHex.bas < prev    next >
BASIC Source File  |  2006-03-15  |  2KB  |  49 lines

  1. Attribute VB_Name = "ConvertHex"
  2. '**************************************
  3. ' Name: Convert Unsigned HEX values
  4. ' Description:Small function to convert
  5. '     very LONG hex strings containing an unsi
  6. '     gned value into a double. Problem with V
  7. '     Bs native solution ("&H0AF") doing this:
  8. '     It assumes 32-Bit signed! longs ... If y
  9. '     ou are working with values larger than 2
  10. '     .147.483.648 you get negative values, la
  11. '     ter you get errors ... ___ When needed?
  12. '     e.g. when working with SNMP timer ticks:
  13. '     They are counted in seconds/100, so a fe
  14. '     w weeks results in very large values ;)
  15. '     ___ Keywords: HEX, CONVERT, CONVERSION,
  16. '     UNSIGNED, SIGNED.
  17. ' By: Light Templer
  18. '
  19. ' Inputs:A string with a hexadecimal val
  20. '     ue
  21. '
  22. ' Returns:A positive double
  23. '
  24. ' Side Effects:Error when input isn't a
  25. '     valid hex value, because I didn't includ
  26. '     e validation for this.
  27. '
  28. 'This code is copyrighted and has' limited warranties.Please see http://w
  29. '     ww.Planet-Source-Code.com/vb/scripts/Sho
  30. '     wCode.asp?txtCodeId=58899&lngWId=1'for details.'**************************************
  31.  
  32.  
  33.  
  34. Public Function HexUnsigned2Dbl(sHex As String) As Double
  35.     ' Long unsigned hex values to doubles (u
  36.     '     sed to get with unsigned longs)
  37.     '
  38.     ' 02/14/2005 - LightTempler
  39.     Dim i As Long
  40.     Dim lExpCtr As Long
  41.     sHex = "0" + sHex
  42.  
  43.  
  44.     For i = Len(sHex) To 2 Step -2
  45.         lExpCtr = lExpCtr + 1
  46.         HexUnsigned2Dbl = HexUnsigned2Dbl + CDbl("&H" + Right$("00" + Mid$(sHex, i - 1, 2), 2)) * 256# ^ (lExpCtr - 1)
  47.     Next i
  48. End Function
  49.