![]() |
Und noch eine Variante zur Konvertierung von Zahlensystemen
Also, hier noch eine Möglichkeit unter Zahlensysteme zu de-/konvertieren.
Zunächst jedoch braucht man eine Funktion zur Berechnung von Potenzen:
Delphi-Quellcode:
Nun zum Konvertieren aus dem Dezimalsystem in jedes andere bis Hexadezimal.
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; Der Parameter d ist die zu konvertierende Dezimalzahl und b die Basis des gewünschten Zahlensystems.
Delphi-Quellcode:
Die Rekonvertierung ist dann auch nicht mehr all zu viel^^.
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; Der Parameter z ist wieder die zu rekonvertierende Zahl(oder halt auch String) und b die Basis des gewünschten Zahlensystems.
Delphi-Quellcode:
Es ist nun nicht von Bedeutung, dass konvert eine Prozedur ist und rekonvert eine Funktion.
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; 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^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz