Einzelnen Beitrag anzeigen

mytbo

Registriert seit: 8. Jan 2007
463 Beiträge
 
#5

AW: Kann man die Bits von Reellen Typen auslesen.

  Alt 31. Mär 2024, 00:32
... der die Werte einer Variable als Bitfolge darstellt. ... Nur klappt das irgendwie nicht. Ich bekomme keine Bits z. B. eines Single ausgelesen. Geht das überhaupt?
Delphi-Quellcode:
function BinToStr(pmValue: Pointer; pmTypeInfo: Pointer): String;
const
  CHAR_MAP: array[Boolean] of Byte = (48, 49); // 0, 1
var
  i: Integer;
  isBit: Boolean;
  bitCount: Integer;
  rttiType: TRttiType;
begin
  Result := '';
  if pmValue = Nil then Exit; //=>
  if pmTypeInfo = Nil then Exit; //=>

  rttiType := TRttiContext.Create.GetType(pmTypeInfo);
  if rttiType <> Nil then
  begin
    bitCount := rttiType.TypeSize * 8;
    SetLength(Result, bitCount);
    for i := 0 to bitCount - 1 do
    begin
      isBit := (PByteArray(pmValue)[i shr 3] and (1 shl (i and 7)) <> 0);
      Result[bitCount - i] := Chr(CHAR_MAP[isBit]);
    end;
  end;
end;

begin
  var i: Integer := 5;
  ShowMessage(BinToStr(@i, TypeInfo(Integer))); // Ausgabe: 00000000000000000000000000000101

  var d: Single := 50.0;
  ShowMessage(BinToStr(@d, TypeInfo(Single))); // Ausgabe: 01000010010010000000000000000000
Bis bald...
Thomas

Geändert von mytbo (31. Mär 2024 um 15:26 Uhr) Grund: Ausgabe hinzugefügt
  Mit Zitat antworten Zitat