home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / clipper / nettos11.zip / MISC / FNHEX.PRG < prev    next >
Text File  |  1993-02-23  |  3KB  |  124 lines

  1. /*
  2.  * File......: FNHEX.PRG
  3.  * Author....: Steve Larsen
  4.  * CIS ID....: 76370,1532
  5.  * Date......: $Date$
  6.  * Revision..: $Revision$
  7.  * Log file..: $Logfile$
  8.  *
  9.  * This is an original work by Steve Larsen and is placed in the
  10.  * public domain.
  11.  *
  12.  * Modification history:
  13.  * ---------------------
  14.  *
  15.  * $Log$
  16.  *
  17.  */
  18.  
  19. #include "netto.ch"
  20.  
  21.  
  22. /*  $DOC$
  23.  *  $FUNCNAME$
  24.  *      fn_Bin2Hex()
  25.  *  $CATEGORY$
  26.  *      Miscellaneous
  27.  *  $ONELINER$
  28.  *      Convert a binary string to hexidecimal 
  29.  *  $SYNTAX$
  30.  *
  31.  *      fn_Bin2I( <cBinStr> ) -> cHexStr
  32.  *
  33.  *  $ARGUMENTS$
  34.  *
  35.  *      <cBinStr> is a string of bytes representing a number.
  36.  *
  37.  *  $RETURNS$
  38.  *
  39.  *      A string containing the hexdecimal value of <cBinStr>.
  40.  *
  41.  *  $DESCRIPTION$
  42.  *
  43.  *      Internally, all information is stored as a series of bytes.  When
  44.  *      performing a direct read from memory, a character string will be
  45.  *      returned.  Use this function to convert that string to its 
  46.  *      hexidecimal numeric equivalent.
  47.  *
  48.  *  $EXAMPLES$
  49.  *
  50.  *      /* convert a string containing CHR(0)+CHR(0)+CHR(222)+CHR(175) */
  51.  *
  52.  *      ? fn_Bin2Hex( "  ▐»" )                            // "    DEAF"
  53.  *
  54.  *  $SEEALSO$
  55.  *      fn_Hex2Bin() fn_Bin2I() fn_PeekStr() fn_PokeStr()
  56.  *  $INCLUDE$
  57.  *
  58.  *  $END$
  59.  */
  60.  
  61. FUNCTION fn_Bin2Hex( cBinStr )
  62.     LOCAL i, cHexStr := ''
  63.  
  64.     FOR i := 1 TO LEN( cBinStr )
  65.         cHexStr += LEFT( ft_Byt2Hex( SUBST( cBinStr, i, 1 ) ), 2 )
  66.     NEXT
  67. RETURN cHexStr
  68.  
  69. /*  $DOC$
  70.  *  $FUNCNAME$
  71.  *      fn_Hex2Bin()
  72.  *  $CATEGORY$
  73.  *      Miscellaneous
  74.  *  $ONELINER$
  75.  *      Convert a hexidecimal string to to binary
  76.  *  $SYNTAX$
  77.  *
  78.  *      fn_Hex2Bin( <cHexStr> ) -> cBinStr
  79.  *
  80.  *  $ARGUMENTS$
  81.  *
  82.  *      <cHexStr> is a string containing hexidecimal characters.
  83.  *
  84.  *  $RETURNS$
  85.  *
  86.  *      A binary string representing the value passed.
  87.  *
  88.  *  $DESCRIPTION$
  89.  *
  90.  *      This function converts a hexidecimal value to it binary equivalent,
  91.  *      and is useful for doing a direct memory translation.
  92.  *
  93.  *  $EXAMPLES$
  94.  *
  95.  *      ? fn_Hex2Bin( "DEAF" )                        // "▐»"  
  96.  *
  97.  *      ? fn_Hex2Bin( "10" )                            // ""  
  98.  *
  99.  *  $SEEALSO$
  100.  *      fn_Bin2Hex() fn_PeekStr() fn_PokeStr()
  101.  *  $INCLUDE$
  102.  *
  103.  *  $END$
  104.  */
  105.  
  106. FUNCTION fn_Hex2Bin( cHexStr )
  107.     LOCAL cBinStr := "", i, nDecVal
  108.     cHexStr := UPPER( cHexStr )
  109.  
  110.     FOR i := LEN( cHexStr ) TO 1 STEP -1
  111.  
  112.         nDecVal := AT( SUBSTR( cHexStr, i--, 1 ), '123456789ABCDEF' )
  113.         IF i > 0
  114.             nDecVal += AT( SUBSTR( cHexStr, i, 1 ), '123456789ABCDEF' ) * 16
  115.         ENDIF
  116.  
  117.         cBinStr := CHR( nDecVal ) + cBinStr
  118.  
  119.     NEXT
  120.  
  121. RETURN( cBinStr )
  122.  
  123.  
  124.