Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zahl nach eindeutigen Summanden auftrennen (wie ChMod) (https://www.delphipraxis.net/111626-zahl-nach-eindeutigen-summanden-auftrennen-wie-chmod.html)

blackdrake 6. Apr 2008 21:33


Zahl nach eindeutigen Summanden auftrennen (wie ChMod)
 
Hallo.

Ich habe eine Tabelle mit folgenden Optionen als Grundvorlage:

Code:
16      10 00 00 00   Zustand A
32      20 00 00 00   Zustand B
64      40 00 00 00   Zustand C
128     80 00 00 00   Zustand D
256     00 01 00 00   Zustand E
512     00 02 00 00   Zustand F
1024    00 04 00 00   Zustand G
2048    00 08 00 00   Zustand H
4096    00 10 00 00   Zustand I
8192    00 20 00 00   Zustand J
16384   00 40 00 00   Zustand K
32768   00 80 00 00   Zustand L
Es können sich wie bei Linux' ChMod viele Varianten ergeben wie z.B. Zustand A, B und K (16+32+16384=16432).
Wie kann ich jetzt anhand einer Zahl wie z.B. 16432 herausfinden, welche Zustände aktiviert sind?

Gruß
blackdrake

mkinzler 6. Apr 2008 21:36

Re: Zahl nach eindeutigen Summanden auftrennen (wie ChMod)
 
Durch Ausmaskieren

blackdrake 6. Apr 2008 21:38

Re: Zahl nach eindeutigen Summanden auftrennen (wie ChMod)
 
Ausmaskieren? Etwa Zahl in Binärcode umwandeln und dann mit AND Arbeiten? Oder gibts eine mathematische Variante?

blackdrake 6. Apr 2008 21:43

Re: Zahl nach eindeutigen Summanden auftrennen (wie ChMod)
 
Vielen Dank für den Tipp. Ich habe gemerkt, dass sich bei dem Binärcode eine "Treppe" bildet:

Code:
A 0000000000010000
B 0000000000100000
C 0000000001000000
D 0000000010000000
E 0000000100000000
F 0000001000000000
G 0000010000000000
H 0000100000000000
I 0001000000000000
J 0010000000000000
K 0100000000000000
L 1000000000000000
Ich werde mal eine Funktion suchen, die eine Dez-Zahl in Binärcode (->String) umwandelt und dann mit Copy() prüfen, ob sich an Stelle X eine 1 befindet. Ist das korrekt so?

inherited 6. Apr 2008 21:58

Re: Zahl nach eindeutigen Summanden auftrennen (wie ChMod)
 
Es geht viel einfacher mit AND

Muetze1 6. Apr 2008 21:59

Re: Zahl nach eindeutigen Summanden auftrennen (wie ChMod)
 
Nein, maskiere die Bits aus. Es ist eine Bitmaske, also warum eine solche Arbeit mit den Strings?

Ansonsten: chmod arbeitet mit Oktalzahlen!

Noch ein paar Links: Tutorial: effizientes arbeiten mit Bitmasken, Michael Puff: Wie funktionieren bitweise OR Verknüpfungen, Ein Beitrag mit entsprechenden Erklärungen


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