Autor Beitrag
heimatkunde
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 24.06.06 12:14 
ich bin auf der suche nach der unit idglobal.pas. ich brauch se zum konvertieren von integer in binary. oder krieg ich das auch anders hin. vielleicht hat ja einer ne funktion parat. (oder die unit). würd mich freuen. thx
fidionael
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 232

Win XP SP2, Ubuntu 6.06
Delphi 7 PE, Delphi 3 Prof
BeitragVerfasst: Sa 24.06.06 12:37 
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.

ausblenden volle Höhe Delphi-Quelltext
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:
ausblenden Delphi-Quelltext
1:
2:
  Meine_Binaerzahl:=IntToBase(Meine_Zahl,BASE_BINARY);
  Meine_Hexzahl:=IntToBase(Meine_Zahl,BASE_HEX);


Mfg