[PHP-users 7945] Re: Permissionのアルゴリズム

WADA Masashi php-users@php.gr.jp
Thu, 06 Jun 2002 01:19:28 +0900


 和田です。

Morikawa [encore-ann] wrote:
>Unix のファイルシステムで、permission を 1,2,4 の組み合わせから
>設定しているアルゴリズムについてお聞きしたいと思います。
>PHPと直接関係はないんですが、下記のようなスクリプトを作成して
>ある数値に含まれている要素を配列で返すようにしてみました。

 もりかわさんが最終的に何を解決しようとされているのかが良く分か
らないのですが、以下のスクリプトを簡単にするのなら、

>  function decode_option($val) {
>    if (!$val) { return false; }
>    $list = array();
>    $i = 1;
>    while ($val > 0 ) {
>      if (( $val >= $i ) and ( $val >= $i*2 )) {
>        $i = $i * 2;
>      } elseif ($val >= $i) {
>        push($list, $i);
>        $val -= $i;
>        $i = 1;
>      } else {
>        $i = $i / 2 ;
>      }
>    }
>    return $list;
>  } // function decode_option

こんな感じでどうでしょう?

function decode_option($val) {
    $list = array();
    $i = 1;
    while($val >= $i) {
        if ($val & $i) $list[] = $i;
        $i *= 2;
    }
    return $list;
}


----
和田雅志 (WADA Masashi)
wada@hh.iij4u.or.jp