Ich habe den Quelltext der an dieser Stelle stand mal rausgenommen, der folgende erlaubt es, eine Zahl von der Basis 10 (Standard) in beliebige Basen umzuwandeln.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| unit Umwandlung;
interface
uses SysUtils, Math;
function IntToBase(val,base: Int64) : String; function BaseToInt(val: String; base: Int64) : Int64;
const BASE_BINARY = 2; BASE_HEX = 16;
implementation
function pot(base,exp: Int64) : Int64; var n: Integer; begin if exp=0 then Result:=1 else Result:=base; for n:=2 to exp do Result:=Result*base; end;
function IntToBase(val,base: Int64) : String; var buf: String; i: Integer; begin Result:=''; if val=0 then buf:='0' else buf:=''; while val > 0 do begin if val mod base < 10 then buf:=buf+chr(48+val mod base) else buf:=buf+chr(65+(val mod base - 10)); val:=val div base; end; for i:=Length(buf) downto 1 do Result:=Result+buf[i]; end;
function BaseToInt(val: String; base: Int64) : Int64; var i: Integer; begin Result:=0; for i:=Length(val) downto 1 do if Ord(val[i])<58 then Result:=Result+((Ord(val[i])-48)*pot(base,Length(val)-i)) else Result:=Result+((Ord(val[i])-65)*pot(base,Length(val)-i)); end;
end. |
Beispiel-Umwandlungen:
Delphi-Quelltext
1: 2:
| Meine_Binaerzahl:=IntToBase(Meine_Zahl,BASE_BINARY); Meine_Hexzahl:=IntToBase(Meine_Zahl,BASE_HEX); |
Mfg