Einzelnen Beitrag anzeigen

Maddin1
(Gast)

n/a Beiträge
 
#1

Und noch eine Variante zur Konvertierung von Zahlensystemen

  Alt 8. Nov 2007, 18:06
Also, hier noch eine Möglichkeit unter Zahlensysteme zu de-/konvertieren.

Zunächst jedoch braucht man eine Funktion zur Berechnung von Potenzen:

Delphi-Quellcode:
function Potenz(basis : byte; exp : byte) : longint;
var z : longint; //Speicherung von Zwischenergebnissen
    i : byte; //Zählvariable für die Schleife
Begin
 z:=1;
 for i:=1 to exp do z:=z*basis;
 Potenz:=z;
End;
Nun zum Konvertieren aus dem Dezimalsystem in jedes andere bis Hexadezimal.
Der Parameter d ist die zu konvertierende Dezimalzahl
und b die Basis des gewünschten Zahlensystems.
Delphi-Quellcode:
procedure konvert(d : word;b : byte; var z: string);
var r : byte; //Rest der ganzzahligen Division
begin
 z:='';
 Repeat
  r := d mod b; //mod = Rest der ganzzahligen Division
  d := d div b; //div = ganzzahlige Division
  case r of
   10 : z:='A'+z;
   11 : z:='B'+z;
   12 : z:='C'+z;
   13 : z:='D'+z;
   14 : z:='E'+z;
   15 : z:='F'+z;
  else
  z:=chr(r+48)+z; end;

 Until d=0;
       end;
Die Rekonvertierung ist dann auch nicht mehr all zu viel^^.
Der Parameter z ist wieder die zu rekonvertierende Zahl(oder halt auch String) und b die Basis des gewünschten Zahlensystems.
Delphi-Quellcode:
function rekonvert (z : string; b : byte) : word;
var l : integer;
    I : byte;
    dz : word;
    ziffer : byte;
begin
l:= length (z);//Speichert die länge des Strings, sprich die Anzahl der Ziffern
 dz:=0;
 for I := 1 to l do begin
 //Umwandlung von ASCII-Zeichen in Zahlwerte
 case z[i] of
 '0'..'9' : ziffer:= ord(z[i])-48;
 'A'..'F' : ziffer:= ord(z[i])-55;
 end;
  dz:=dz + ziffer*Potenz (b,l-i);
 end;
 rekonvert:=dz;
end;
Es ist nun nicht von Bedeutung, dass konvert eine Prozedur ist und rekonvert eine Funktion.
Ich habe es nur zu Test-Zwecken umgeschrieben und es kann je nach Wunsch, wieder zurück geschrieben werden.
Ich hoffe ich konnte Euch helfen. Und in diesem Sinne, viel Spass^^
  Mit Zitat antworten Zitat