2012-01-20 154 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

我喜歡那個小三元運算符,所以很擅長讓代碼更緊湊。我的目標實際上並不是一條線,我的目標是消除中間變量。我討厭把任何東西分配給一個不會被使用的變量......我的一個掛斷... –