![]() |
Von beliebigem Zahlensystem in ein anderes
Liste der Anhänge anzeigen (Anzahl: 2)
Ich werde nun einen Code vorstellen, mit dem man jede beliebige Zahl eines beliebigen Zahlensystem in jedes andere verwandeln kann.
dabei muss natürlich die Zahl in einen Int64 passen und das Zahlensystem muss <37 sein, da man sonst Sonderzeichen nehmen müsste...aber wers braucht kanns einfach anpassen. Die hierfür entscheidende Stelle ist in GetChar bzw GetInt. Hier erstmal etwas Code, den ich nachher brauche
Delphi-Quellcode:
Nun der Code, mit dem Ich eine Dezimalzahl in eine Zahl der Basis Base umwandle.
function GetChar(Number: Integer):Char;
//Integer in Char umwandeln (z.B. 10 zu A) 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; //Char in Integer umwandeln (z.B. A zu 10) begin Result:=Ord(Value); if Result<58 then Result:=Result-48 else if Result<91 then Result:=Result-55 else Result:=0; end; function Potenz (Base, Exp : Integer): Int64; //berechnet eine Potenz...wahlweise auch IntPower in der Unit Math var i: Integer; begin Result:=1; for i:=1 to Exp do Result:=Result * Base; end;
Delphi-Quellcode:
Der Code um eine Zahl der Basis Base in eine Dezimalzahl umzuwandeln
function DecToBase(Value:Int64; Base:Integer):String;
var Rest:Integer; begin repeat Rest:=Value Mod Base; Value:=Value Div Base; Result:=GetChar(Rest) + Result; until Value=0; end;
Delphi-Quellcode:
So, und nun das ganze in eine Function verpackt:
function BaseToDec(Value:String; Base:Integer):Int64;
var i, j:Integer; begin j:=0; Result:=0; for i:=Length(Value) downto 1 do begin Result:=Result + GetInt(Value[i]) * Potenz(Base,j); inc(j); end; end;
Delphi-Quellcode:
[edit=Matze]Code formatiert. Mfg, Matze[/edit]
function BaseToBase(StartBase: Integer; Value: String; EndBase: Integer):String;
begin Result:=DecToBase(BaseToDec(Value, StartBase), EndBase); end; [edit=Chakotay1308]Anhänge geupdatet. Mfg, Chakotay1308[/edit] [edit=Chakotay1308]Fehler im Source korrigiert. Mfg, Chakotay1308[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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