Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Integer zu Binär (https://www.delphipraxis.net/38583-problem-mit-integer-zu-binaer.html)

PierreB 21. Jan 2005 12:18


Problem mit Integer zu Binär
 
Moin,

mittels folgendem Code (Danke an Luckie :thumb: ) wandle ich Integerzahlen ins Binärformat um:
Code:
function IntToBin(Int: Integer): String;
var
  i : Integer;
begin
  Result := '';
  for i := 7 downto 0 do
  Result := Result + IntToStr((Int shr i) and 1);
end;
Es kunktioniert auch alles gut, nur leider steht dann bei der Ausgabe z.b. wenn ich 7 umrechne erhalte ich: 00000111. Wie kann ich aber die überflüssigen Nullen vor der eigentlichen Zahl löschen? Also das nur die "richtige" Zahl, in dem Falle 111 da steht ?

Vielen Dank,

Matze 21. Jan 2005 12:20

Re: Problem mit Integer zu Binär
 
Entweder im String direkt löschen (Delphi-Referenz durchsuchenDelete, Delphi-Referenz durchsuchenPos) oder mittels Hier im Forum suchenFormat.

PierreB 21. Jan 2005 12:28

Re: Problem mit Integer zu Binär
 
Ja, mit Pos und Delete hab ichs schonmal versucht, aber leider waren dann alle Nullen weg. Das Problem ist auch das, dass ich ja nicht weiß wann die "richtige" Zahl beginnt...

s14 21. Jan 2005 12:38

Re: Problem mit Integer zu Binär
 
Vielleicht geht's mit

Delphi-Quellcode:
While Pos('0', s) = 1 do Delete(s, 1, 1)
S ist natürlich der String.

SubData 21. Jan 2005 12:39

Re: Problem mit Integer zu Binär
 
Mit dieser Funktion macht er keine Nullen voran:

Delphi-Quellcode:
function DezToBin(Zahl: Int64): String;
begin
  Result:='';
  repeat
    if Zahl mod 2 =0 then
    begin
      Result := '0' + Result;
    end else
    begin
      Result := '1' + Result;
    end;
    Zahl := Zahl div 2;
  until Zahl = 0;
end;

PierreB 21. Jan 2005 12:44

Re: Problem mit Integer zu Binär
 
Code:
(Zahl: Int64)
Hm, is das Integer64 ? Gibs das in D3 schon ??
Mein D3 sagt undefinierter Bezeichner ! :(

Matze 21. Jan 2005 12:51

Re: Problem mit Integer zu Binär
 
Dann nimm doch einfach integer. ;)

PierreB 21. Jan 2005 12:55

Re: Problem mit Integer zu Binär
 
Ok, vielen Dank ! :thumb:

czapie 21. Jan 2005 12:57

Re: Problem mit Integer zu Binär
 
Zitat:

Das Problem ist auch das, dass ich ja nicht weiß wann die "richtige" Zahl beginnt
Na wenn du von links durchgehst, wenn die erste 1 kommt, bzw. wenn nur noch ein Zeichen übrig was null ist.

Kedariodakon 21. Jan 2005 13:14

Re: Problem mit Integer zu Binär
 
Hier was fixes...
glaub ich :zwinker:

Delphi-Quellcode:
Function   IntToBinString( Const Value:   Integer; Trim: Boolean = False ): String;
Var   i:         Byte;
Begin
   SetLength( Result, 32 );
   For   i := 31 Downto 0 Do Begin
      If ( Value And ( $80000000 Shr ( 31 - i ) )Shr i ) = 1
         Then Result[ 32 - i ] := '1'
         Else Result[ 32 - i ] := '0';
   End;
   If Trim Then Result := Copy( Result, Pos( '1', Result ), Length( Result ) );
End;
Bye

Kedariodakon 21. Jan 2005 13:45

Re: Problem mit Integer zu Binär
 
Noch besser:

Delphi-Quellcode:
Function IntToBinString( Const Value:   Integer; Trim: Boolean = False ): String;
Var i:   Byte;
Begin
   SetLength( Result, 32 );
   For   i := 31 Downto 0 Do Begin
      If ( Value And ( 1 Shl i ) Shr i ) = 1
         Then Result[ 32 - i ] := '1'
         Else Result[ 32 - i ] := '0';
   End;
   If Trim Then Result := Copy( Result, Pos( '1', Result ), Length( Result ) );
End;
Oder gleich so: :zwinker:


Delphi-Quellcode:
Function IntToBinString( Const Value:   Integer; Trim: Boolean = False ): String;
Var i:   Byte;
Begin
   SetLength( Result, 32 );
   For   i := 31 Downto 0 Do Begin
      Result[ 32 - i ] := Chr( ( Value And ( 1 Shl i ) Shr i ) + $30 );
   End;
   If Trim Then Result := Copy( Result, Pos( '1', Result ), Length( Result ) );
End;
viel Spass damit :mrgreen:

bye

PierreB 21. Jan 2005 16:06

Re: Problem mit Integer zu Binär
 
Wow, funzt gut.

Thanx ;)

Falls Interesse besteht, würde ich mein Programm auch in der DP veröffentlichen...

negaH 22. Jan 2005 12:06

Re: Problem mit Integer zu Binär
 
Delphi-Quellcode:
function Bin(Value: Cardinal): String;
const
  Digit: array[Boolean] of Char = ('0', '1');
begin
  Result := '';
  while Value <> 0 do
  begin
    Result := Digit[Odd(Value)] + Result;
    Value := Value shr 1;
  end;
end;
Sorry, aber eure Sourcen sind manchmal echt vorn Ar... :) Soll keine Beleidigung sein sondern nur ein Hinweis darauf das man in PASCAL wirklich einfach und elegant programmieren kann.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 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