AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Bitweises kopieren aus einem String

Ein Thema von angos · begonnen am 3. Aug 2007 · letzter Beitrag vom 8. Aug 2007
 
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#1

Bitweises kopieren aus einem String

  Alt 3. Aug 2007, 12:37
Der folgende Code ist dazu gedacht, teile eines strings auf bitebene kopieren. Zurückgegeben wird der Dezimalwert des kopierten strings.
Beispiel:

Delphi-Quellcode:
procedure TestThatFunction;
begin
  s := '567';
  i := BitCopyToInt(s, 6, 7);
end;
Binärcode zu 5 6 7
00000101 00000110 00000111
die Bitweise Kopie nimmt nun ab der 6. Position 7 Zeichen (rot markiert)
Der Rückgabewert ist in diesem Fall 64 + 16 = 80



Delphi-Quellcode:
uses
  Math;

Delphi-Quellcode:
// -----------------------------------------------------------------------------
// BitCopyToInt
// Erzeugt eine Bitweise Kopie von String s und gibt den daraus
// resultierenden Dezimalwert zurück
// -----------------------------------------------------------------------------
function BitCopyToInt(s: String; bitStart, bitLength: Integer): Integer;
var
  i: Integer;
  bit: Integer;
const
  bit1 = $01;
  bit2 = $02;
  bit3 = $04;
  bit4 = $08;
  bit5 = $10;
  bit6 = $20;
  bit7 = $40;
  bit8 = $80;
begin
  if ((bitStart + bitLength - 1) > (length(s) * 8)) then
    Result := -1
  else
  begin
    Result := 0;
    for i := bitStart to bitStart + bitLength - 1 do
    begin
      // index
      case i mod 8 of
        1: bit := bit8;
        2: bit := bit7;
        3: bit := bit6;
        4: bit := bit5;
        5: bit := bit4;
        6: bit := bit3;
        7: bit := bit2;
      else
        bit := bit1;
      end;
      Result := Result + IfThen((Ord(s[Trunc((i + 7) / 8)]) and bit) = bit
        , Trunc(Power(2, (bitStart + bitLength - i - 1) )), 0);
    end;
  end;
end; // BitCopyToInt
[edit=Matze]Dieses Thema reicht nicht ganz aus, um in die Code-Library aufgenommen zu werden. MfG, Matze[/edit]
Ansgar
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 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