什么是正确的方法来检查位域是否打开 - (在PHP中)?什么是正确的方法来检查,如果位域开启php
我想检查来自db(mysql)的位域是否打开或不打开。
这是正确的方法吗?
if($bit & 1)
还有其他方法吗?
我看到有人使用ord()函数的代码,它是正确的吗?
像if(ord($bit) == 1)
什么是正确的方法来检查位域是否打开 - (在PHP中)?什么是正确的方法来检查,如果位域开启php
我想检查来自db(mysql)的位域是否打开或不打开。
这是正确的方法吗?
if($bit & 1)
还有其他方法吗?
我看到有人使用ord()函数的代码,它是正确的吗?
像if(ord($bit) == 1)
为了得到正确的位,使用此语法:
$bit & (1 << $n)
哪里$n
是让(ñ +1)至少显著位。所以$n=0
会让你成为第一个最不重要的位。
在我的情况是? $ bit&(1 << 1)? (在db设置为1) – 2010-08-18 12:20:25
我看到在我的情况下是$ bit&(1 << 0) – 2010-08-18 12:22:43
@Haim Evgi:哦,是的,当然,它是基于零的。 – Gumbo 2010-08-18 12:24:48
使用
if($bit & (1 << $n)) {
// do something
}
哪里$n
是ñ位至第拿到减一(例如,$n=0
得到至少显著位)
这是一个有点晚,但可能对未来这个问题的访问者有用。我做了一个小函数,它返回在某个标志中有效的所有位。
/**
* Shows all active bits
*
* @param int $flag
* @return array
*/
function bits($flag)
{
$setBits = array();
for ($i = 1; $i <= 32; $i++) {
if ($flag & (1 << $i)) {
$setBits[] = (1 << $i);
}
}
// Sort array to order the bits
sort($setBits);
return $setBits;
}
echo "<pre>";
var_dump(bits(63));
echo "</pre>";
我用
if (($flag & 0b010) == 0b010) {
// here we know that the second bit (dec 2) is set in $flag
}
ORD()返回这听起来像一个做事的方式hackisk字符串的ASCII值。 – Chris 2010-08-18 11:59:07