Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Integer in Bits (https://www.delphipraxis.net/3997-integer-bits.html)

braingrenade 10. Apr 2003 18:26


Integer in Bits
 
Moin leute !

Wie kann ich einen Integer in seine Bits zerlegen?
also das aus 11 z.b. 1 1 0 1 0 0 0 0 wird (oder so).

die function könnte ungefähr so aussehen :
Delphi-Quellcode:
Type Tboolarray = record
  bits : array of bool;
end;

function inttobit(int : integer) : Tboolarray;
begin
???
???  //wie's weiter geht weiß ich nicht !
???
end;
Hoffe jemand hat nen Plan wie! (und wie's ander's rum geht)

Daniel B 10. Apr 2003 18:31

Hallo,

schau Dir mal in diesem Thread die Funktion von Christian Seehase an.

Grüsse, Daniel :hi:

braingrenade 10. Apr 2003 18:37

Ahh !

Ich glaub ich brauch dringend den experten !

Duffy 10. Apr 2003 19:04

Hallo,
anbei mal ein Beispiel, wie es gehen könnte.
Delphi-Quellcode:
function IntToBin(Value: Cardinal): string;
var
  I: Integer;
begin
  SetLength(Result, 32); // oder auch kürzer
  for I := 1 to 32 do
  begin
    if ((Value shl (I-1)) shr 31) = 0 then
    begin
      Result[I] := '0'
    end
    else
    begin
      Result[I] := '1';
    end;
  end;
end;
bye

Christian Seehase 12. Apr 2003 13:35

Moin Daniel,

die Umkehrung der Funktion in dem von Dir genannten Thread müsste hier zur Anwendung kommen:

Delphi-Quellcode:
function IntToBin(const AiValue : integer) : string;

const
  _aBinDigits : array [Boolean] of char = ('0','1');

var
  iPowerOfTwo : integer;
  i          : integer;

begin
  Result     := StringOfChar(#32,32);
  iPowerOfTwo := 1;
  for i := 32 downto 1 do
  begin
    Result[i]  := _aBinDigits[(AiValue and iPowerOfTwo) <> 0];
    iPowerOfTwo := iPowerOfTwo shl 1;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz