Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#9

Re: Chiffre BinärtoText TexttoBinär

  Alt 15. Okt 2005, 19:34
Also, ich hab das ganze nochmal geschrieben.

Was es kann:
- umformen in jede basis (nicht nur Binär)
- Zurückumformen aus jeder Basis

Zeilenumbrücher ignoriere ich einfach, beim zurückkonvertieren werden sie ja eh wiederhergestellt^^

Mein Formular:
2 Memos, ein SpinEdit und zwei Buttons

Die Umrechnungen entstammen übrigens der Unit UBase2Base von mir die afaik auch in der CodeLib steht.

Delphi-Quellcode:
function Potenz(Base, Exp : Integer):Int64;
var i:Integer;
begin
   Result:=1;
   for i:=1 to Exp do Result:=Result * Base;
end;

function GetChar(Number: Integer):Char;
begin
  if Number<10 then Result:=Chr(Number+48)
  else if Number<91 then Result:=Chr(Number+55)
  else Result:=' ';
end;

function GetInt(Value: Char):Integer;
begin
  Result:=Ord(Value);
  if Result<58 then Result:=Result-48
  else if Result<91 then Result:=Result-55
  else Result:=0;
end;

function DecToBase(Value:Int64; Base:Integer):String;
var Rest:Integer;
begin
  Result:='';
  repeat
    Rest:=Value Mod Base;
    Value:=Value Div Base;
    Result:=GetChar(Rest) + Result;
  until Value=0;
end;

function BaseToDec(Value:String; Base:Integer):Int64;
var i, j:Integer;
begin
  Value:=Trim(Value);
  j:=Length(Value)-1;
  Result:=0;
  for i:=1 to Length(Value) do
    begin
    Result:=Result + GetInt(Value[i]) * Potenz(Base,j);
    dec(j);
    end;
end;

function Code(Val: String; Base: Integer):String;
var i:Integer;
begin
  Result:='';
  for i:=1 to Length(Val) do
    Result:=Result+DecToBase(Ord(Val[i]),Base)+' ';
end;

function DeCode(Val: String; Base: Integer):String;
var P: Integer;
    A: String;
begin
  Result:='';
  P:=Pos(' ',Val);
  while P>1 do
    begin
    A:=copy(Val,1,P);
    Result:=Result+Chr(BaseToDec(A,Base));
    Delete(Val,1,P);
    P:=Pos(' ',Val);
    end;
end;
Edit: Schön verpackt^^
BTW:
Basis 2: 1000101 1100100 1101001 1110100 111010 100000 1010011 1100011 1101000 11110110 1101110 100000 1110110 1100101 1110010 1110000 1100001 1100011 1101011 1110100 1011110 1011110
Basis 4: 1011 1210 1221 1310 322 200 1103 1203 1220 3312 1232 200 1312 1211 1302 1300 1201 1203 1223 1310 1132 1132
Basis 16: 45 64 69 74 3A 20 53 63 68 F6 6E 20 76 65 72 70 61 63 6B 74 5E 5E
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat