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^^