Ver Mensaje Individual
  #7  
Antiguo 14-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola acertijo022.

Número base 10 a base n:
Código Delphi [-]
function Base10ABaseN(Numero: Longint; const Base: Byte): string;
var
  i: Integer;
  NumAux: string;
  Modulo: Integer;
begin
  NumAux:='';
  repeat
    Modulo := Numero mod Base;
    Numero := Numero div Base;
    if Modulo > 9 then
      NumAux:= NumAux + chr(Modulo + 55)
    else
      NumAux:= NumAux + chr(Modulo + 48);
  until Numero <=0;
  for i := Length(NumAux) downto 1 do
    Result:= Result + NumAux[i];
end;

Número base N a base 10:
Código Delphi [-]
function BaseNABase10(Num : string; n : byte): Integer;
const
  Car = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // límite: base 36
var
  i : Byte;
begin
  Result:=0;
  for i:= 1 to Length(Num) do
    Result:= Result * n + Pos(Upcase(Num[i]), Car) - 1;
end;

Llamadas de ejemplo usando el número 2314 con base 32 y 36:
Código Delphi [-]
  (* Numero en base 10 a base 32 *)
  ShowMessage(Base10ABaseN(2314, 32)); // 28A
  ShowMessage(Base10ABaseN(2314, 36)); // 1SA
  (* Numero en base 32 a base 10 *)
  ShowMessage(IntToStr(BaseNABase10('28A', 32)));// 2314
  ShowMessage(IntToStr(BaseNABase10('1SA', 36)));// 2314
  ...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-04-2011 a las 18:00:28.
Responder Con Cita