// Integer-Zahlen können in Bitfolgen umgewandelt werden
// und umgekehrt

// und mit D4 unter Win98

function IntToBin(i: int64): string; 
begin 
  result := ''; 
  while i > 0 do begin 
    result := inttostr(ord(odd(i))) + result; 
    i := i shr 1; 
  end; 
  if result = '' then result := '0'; 
end; 
 
function BinToInt(b: string): int64; 
var x, lg: integer; 
begin 
  b := trim(copy(b, length(b) - 63, 64)); 
  lg := length(b); 
  result := 0; 
  for x := lg downto 1 do 
    result := result + (strtoint(b[x]) shl (lg - x)); 
end; 
 
// Beispielaufruf 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); 
begin 
  if key = #13 then begin 
    key := #0; 
    label1.Caption := IntToBin(strtoint(edit1.text)); 
// und Gegenprobe 
    label2.Caption := inttostr(BinToInt(label1.caption)); 
  end; 
end; 

//-------------------------------------------------- 
 
// Bei der Umwandlung von Bytes will man meist auch  die
// Vornullen anzeigen lassen: 11 => 00001011 
 
function ByteToBin(i: byte): string; 
var x: byte; 
begin 
  result := ''; 
  for x := 0 to 7 do begin 
    result := inttostr(ord(odd(i))) + result; 
    i := i shr 1; 
  end; 
end; 
 
// Und wieder zurück 
 
type s8 = string[8]; 
 
function BinToByte(b: s8): byte; 
var x, lg: integer; 
begin 
  lg := length(b); 
  result := 0; 
  for x := lg downto 1 do 
    result := result + (strtoint(b[x]) shl (lg - x)); 
end;


// siehe auch: Dezimalzahlen in andere Zahlensysteme konvertieren
 


Zugriffe seit 6.9.2001 auf Delphi-Ecke