Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Decimal/Binario/Hexadecimal (https://www.clubdelphi.com/foros/showthread.php?t=78929)

gabtroc 26-05-2012 18:21:23

Decimal/Binario/Hexadecimal
 
Buenos dias amigos del club delphi necesito hacer un programa en aplicacion tipo consola que me lea un numero en cualquiera de las tres bases (decimal/binario/hexadecimal) y me las convierta en sus equivalentes de las otras dos bases.

Nada mas he empezado con el codigo de decimal a binario pero tengo problemas convirtiendo de decimal a hexadecimal si alguien me pudiera ayudar con eso seria excelente y con las otras conversiones empezando de base hexadecimal o con base binaria.

Código Delphi [-]
cbin:=0;
repeat
dig:=aux mod 2;
cbin:=dig+cbin*10;
aux:=aux div 2;
until aux=0;
cv:=0;
Repeat
  v:=cbin mod 10;
  cv:=v+cv*10;
cbin:=cbin div 10;
Until cbin=0;
Writeln(cv);    // Este es el numero en binario

aux:=pr;
chex:=0;
repeat
dig:=aux mod 16;
chex:=dig+chex*10;
aux:=aux div 16;
until aux=0;
Writeln(chex);
cv:=0;
Repeat
  v:=chex mod 10;
  cv:=v+10*cv;
  chex:=chex div 10;
Until chex=0;
Writeln(cv);

cv seria el numero al cual tendria que convertir en hexadecimal haciendo una comporacion de sus digitos y pasandolo a sus equivalentes hexadecimales pero no se como escribir esa comparacion porque por ejemplo el numero 123 en decimal seria 7B, si meto ese numero en el programa cv seria igual a 711 lo cual en equivalente a hexadecimal me daria mi 7B pero como hago para que me identifique cuando convierto el 11 a una B en vez de dos 1?

Si no se entiende la explicacion escriban por favor que es urgente tengo hasta hoy en la noche para mandar ese programa.

Casimiro Notevi 26-05-2012 18:51:35

Al final de esta página, abajo del todo, tienes algunos enlaces que pueden servirte, échales un vistazo y comentas si necesitas algo más.

gabtroc 26-05-2012 19:48:41

Ya los revise y todos son aplicaciones tipo vcl y no he visto nada de eso todavia ne mi curso y me enredo con esos codigos.

Otra cosa yo puedo convertir un extended a un integer? y si se puede como lo hago estoy atorado con eso

Casimiro Notevi 26-05-2012 20:51:17

Ya veo que no has mirado los enlaces que te he indicado, en uno de ellos está en pascal, además con enlaces a otros hilos donde se trató el tema de binario a hexadecimal y viceversa, etc.

ajvdelphi 30-05-2012 22:00:48

Hola
Yo uso esta funcion:
De Hexa a Binario:
Código Delphi [-]
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;

ejemplo de llamada:

Código Delphi [-]
Label1.Caption:=HextoBin('FA');


De binario a hexa

Código Delphi [-]
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;

Llamada


Código Delphi [-]
Label1.Caption:=BintoHex('100011100100101011');

Saludos
Augusto

:)


La franja horaria es GMT +2. Ahora son las 04:02:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi