Christian Kruse: Bitmask auslesen

Beitrag lesen

你好 Heizer,

$output soll nun so gesetzt werden, daß entweder ein GIF oder ein PNG
oder ein JPEG oder eine Kombination aus diesen geschrieben oder
zurückgegeben wird. Ich denke mir also:
RETURN = 0
WRITE = 1
GIF = 2
PNG = 4
JPEG = 8

$output kann also werte von 1 - 15 haben (das kann sich aber
natürlich noch erweitern). Meine Frage ist also, ob jemand eine
allgemeine Funktion weiß, mit der ich diese Bitwerte einzeln bekomme.

Die Funktion ist ganz einfach: du gehst alle Bits durch und pruefst, ob
es gesetzt ist. Kann man z. B. so machen:

function test($var) {
  $max = 32;
  $ret = Array();

for($i=0;$i<$max;++$i) {
    $val = (1<<$i);

if($var & $val) $ret[] = $val;
  }

return $ret;
}

var_dump(test(1|2|4));

Ich bin von 32 ausgegangen, weil 32 Bit-Rechner normal sind. Bei 64
Bit-Maschinen muss man $max eventuell hoeher setzen, um alle Bits
abzudecken, aber 32 Bit sollten eigentlich fuer alle Masken reichen.

再见,
 CK

--
Der Verstand ist der Hausherr, der Koerper sein Gast.
http://wwwtech.de/