我承认我真的不知道自己在做什么!我从SecondLife中提取一些数据并在PHP中解析它。数据是llGetRegionFlags的整数,在我的情况下,返回1048592
现在我需要在PHP中进行逐位比较,以确定哪些标志为true / false。例如,0x00000040用于“块terraform”标志。
每个标志的符号都是十六进制的,我有一个要测试的整数,PHP manual表示整数,并以二进制显示示例。
所以我的问题是,给定一个整数和一些十六进制标志,我如何在PHP中进行按位比较? Brainfried!提前致谢
答案 0 :(得分:1)
要确定特定位是否已打开,请使用& (AND)运营商:
if ($data & 0x00000040) {
// block terraform flag is true
}
如果该位打开,AND运算符将返回正数。如果关闭,则AND运算符将导致零。
答案 1 :(得分:0)
使用单个AND &
/ OR |
if ($value1 & $value2) { }
PHP手册解释了更多:http://php.net/manual/en/language.operators.bitwise.php
答案 2 :(得分:0)
您可以定义所需的位,并检查它们以使其看起来干净。即
define('BLOCK_TERAFORM', 0x00000040);
....
if($data & BLOCK_TERAFORM) {
... do something ...
}
答案 3 :(得分:0)
通常使用如下代码检查位标志:
$blockTerraformFlag = 0x00000040;
$isBlockTerraform = (($RegionFlags & $blockTerraformFlag) == $blockTerraformFlag);