2012-01-20 122 views
1

我试图将部分python脚本转换为php。我大部分都知道,但我遇到了一些与移位(我认为?)有关的问题,即使在PHP中我也没有太多经验!有人可以将这个Python函数转换为PHP吗?蟒蛇到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

如果你打算采取这种方法,这可以归结为一行:'return($ on)? $ value | (1 << $ position):$ value&〜(1 << $ position);' – DaveRandom

+0

我喜欢那个小三元运算符,所以很擅长让代码更紧凑。我的目标实际上并不是一条线,我的目标是消除中间变量。我讨厌把任何东西分配给一个不会被使用的变量......我的一个挂断... –