2012-01-20 9 views
1

私は、pythonスクリプトの一部をPHPに変換しようとしています。私はそれのほとんどを知っていますが、私はビットシフト(私は思う?)とは何かにぶつかりましたが、これはPHPでさえもあまり経験がありません!誰かがこのPython関数をPHPに変換してください。pythonからphpへの変換

def setBit(value, position, on): 
    if on: 
     mask = 1 << position 
     return (value | mask) 
    else: 
     mask = ~(1 << position) 
     return (value & mask)  

答えて

7
function setBit($value, $position, $on = true) { 
    if($on) { 
     return $value | (1 << $position); 
    } 
    return $value & ~(1 << $position); 
} 
+0

うわー、それはそれはPythonの関数のカーボンコピーのようなものだ、ただ恥ずかしいです!とにかく、前に<<演算子を使ったことはありませんでしたね。 – Landon

4
function SetBit ($value, $position, $on) { 

    if ($on) return ($value|(1<<$position)); 

    return ($value&(~(1<<$position))); 

} 
+2

このアプローチをとるなら、これを1行に減らすことができます: 'return($ on)? $値| (1 << $ position):$ value&〜(1 << $ position); ' – DaveRandom

+0

私はその小さな三項演算子が大好きです。私の目標は実際には1行ではなく、私の目標は中間変数を取り除くことでした。私は何度も使用されない変数に何かを割り当てることは嫌い...私のハングアップ... –