2012-01-20 6 views
1

Я пытаюсь преобразовать части скрипта python в php. Я знаю большую часть этого, но я столкнулся с чем-то связанным с битрейтом (я думаю?), Который у меня не так много опыта даже в PHP! Может кто-нибудь перевести эту функцию python на php, пожалуйста?python to php conversion

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

вау, это просто неудобно, это как копирку функции питона! Наверное, я никогда не использовал «оператора» раньше, во всяком случае, спасибо! – 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

Мне нравится этот маленький тернарный оператор, так что лучше сделать код более компактным. Моя цель не была на самом деле одной строкой, моя цель состояла в том, чтобы устранить промежуточные переменные. Я ненавижу присваивать что-либо переменной, которая не будет использоваться несколько раз ... повесить мой ... –