Ver Mensaje Individual
  #6  
Antiguo 10-09-2011
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Reputación: 20
mightydragonlor Va por buen camino
Hola a todos, no había podido dar repuesta por tanto trabajo, pero les cuento:
un hexadecimal EBD0A0A2B9E5443387C068B6B72699C7 lo convierto a decimal 313451834834061278758346828331453159879 así

Código Delphi [-]
{Convierte un hexadecimal en un TBCD}
 Function HexToBCD(s : string) : TBcd;
 var
   bb : Byte;
   cc : Char;
 begin
  Result := 0;
  s := UpperCase(s);
  for bb := 1 to Length(s) do
  begin
   Result := Result * 16;
   cc := s[bb];
   case cc of
    '0'..'9': Result:= Result + ord(cc) - ord('0');
    'A'..'F': Result:= Result + ord(cc) - ord('A')+10;
   else raise EConvertError.Create('Se ha encontrado un caráctar no valido.');
   end;
  end;
 end;

y desde el hexadecimal lo paso a binario 1110101111010000101000001010001010111001111001010100010000110011100001111100000001101000101101101011 0111001001101001100111000111 así

Código Delphi [-]
 {Convierte un hexadecimal en un binario}
Function HexToBin(Hexadecimal:string):string;
 const
      BCD: array [0..15] of string=
        ('0000','0001','0010','0011','0100','0101','0110','0111',
         '1000','1001','1010','1011','1100','1101','1110','1111');
 var
    i:integer;
 begin
    for i:=Length(Hexadecimal) downto 1 do
      Result:=BCD[StrToInt('$'+Hexadecimal[i])]+Result;
end;

desde el binario lo puedo pasar al hexadecimal así

Código Delphi [-]
{Convierte un binario a hexadecimal}
function BinToHex(Binario:string):string;
 const
      BCD: array [0..15] of string=
        ('0000','0001','0010','0011','0100','0101','0110','0111',
         '1000','1001','1010','1011','1100','1101','1110','1111');
      HEX: array [0..15] of char=
        ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
 var
    i,n:integer;
    sTemp:string;
    sNibble:string;
 begin
    Result:='';
    sTemp:=Binario+Copy('000',1,Length(Binario) mod 4);
    for i:=0 to (Length(Binario) shr 2)-1 do
    begin
     sNibble:=Copy(sTemp,(i shl 2)+1,4);
     n:=8;
     while (sNibble <> BCD[n]) do
       if sNibble < BCD[n] then Dec(n) else Inc(n);
     Result:=Result+HEX[n];
    end;
 end;
El gran problema es que desde el décimal no he podido pasarlo a hexadecimal, alguna idea?
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita