FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Binario 2 Hexadecimal 16 bits
Posts: 485
Joined: Fri Feb 09, 2007 10:34 AM
Binario 2 Hexadecimal 16 bits
Posted: Fri Dec 18, 2009 12:27 PM

Muy buenas, alguien sabr铆a indicarme una funci贸n que pasara de Binario a Hexadecimal Y de Hexadecimal a Binario, es decir, necesito pasar

0000000000000010 => 0002

1111111111111111 => FFFF

y Tambi茅n lo necesito alreves, es decir,

0002 => 0000000000000010

FFFF => 1111111111111111

Un Saludo.

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Binario 2 Hexadecimal 16 bits
Posted: Sun Dec 20, 2009 08:49 AM
Juan,

La primera de las dos funciones que buscas:
Code (fw): Select all Collapse
function Main()

   MsgInfo( BinToHex( "1111111111111110" ) )

return nil
 

function BinToHex( cBin )

   local n, nResult := 0

   for n = Len( cBin ) to 1 step -1
      if SubStr( cBin, n, 1 ) == "1"
         nResult += 2 ^ ( Len( cBin ) - n )
      endif
   next

return DecToHex( nResult )
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Binario 2 Hexadecimal 16 bits
Posted: Sun Dec 20, 2009 08:56 AM
Aqui van las dos:
Code (fw): Select all Collapse
#include "FiveWin.ch"

function Main()

   MsgInfo( BinToHex( "1111111111111110" ) )

   MsgInfo( HexToBin( "FFFE" ) )

return nil
 

function BinToHex( cBin )

   local n, nResult := 0

   for n = Len( cBin ) to 1 step -1
      if SubStr( cBin, n, 1 ) == "1"
         nResult += 2 ^ ( Len( cBin ) - n )
      endif
   next

return DecToHex( nResult )

function HexToBin( cHex )

  local nValue := HexToDec( cHex )  
  local n, cResult := ""

  for n = 1 to 16
     cResult += If( nAnd( nValue, 2 ^ n ) == 2 ^ n, "1", "0" )
  next     

return cResult

Si necesitases mucha velocidad de proceso, entonces lo id贸neo seria implementarlas en lenguaje C.
regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion