如何在PHP中检查十六进制标志?

如何在PHP中检查十六进制标志?,php,Php,我已经编写了一个小的web应用程序来监控我更大版本的版本,现在我决定以十六进制标志的形式发送一些信息,比如000000000000C19B。mysql db字段是一个utf8 16varchar 在php脚本中,我有一个从0x800000到0x01的数组 $gFlagsLong = array( 0x800000 => "Reserv6", //24 0x400000 => "Reserve5", //23 0x2000

我已经编写了一个小的web应用程序来监控我更大版本的版本,现在我决定以十六进制标志的形式发送一些信息,比如000000000000C19B。mysql db字段是一个utf8 16varchar

在php脚本中,我有一个从0x800000到0x01的数组

$gFlagsLong = array( 0x800000 => "Reserv6", //24
                0x400000 => "Reserve5", //23
                0x200000 => "Flag22",   //22
                0x100000 => "Flag21",   //21
                0x80000 => "Flag20",    //20
                0x40000 => "Flag19",    //19
                0x20000 => "Flag18",    //18
                0x10000 => "Flag17",    //17
                0x8000 => "Flag16",     //16
                0x4000 => "Flag15",     //15
                0x2000 => "Flag14",     //14
                0x1000 => "Flag13",     //13
                0x800 => "Flag12",      //12
                0x400 => "Reserve2",    //11
                0x200 => "Flag10",  //10
                0x100 => "Flag9",       //9
                0x80 => "Reserve1",     //8
                0x40 => "Flag7",        //7
                0x20 => "Flag6",        //6 
                0x10 => "Flag5",        //5
                0x08 => "Flag4",        //4
                0x04 => "Flag3",        //3
                0x02 => "Flag2",        //2
                0x01 => "Flag1" );      //1
我试着,像在C中一样,如果设置了任何一个值,我就修改这个字符串

                $sFlags ="000000000000C19B";
                $sCheck = "X";
                $sNCheck = " "; // html space char  
                $sTemp = "";
                foreach($gFlagsLong as  $nKey => $sBez){
                    if($sFlags & $nKey) $sTemp = $sCheck;
                    else $sTemp = $sNCheck;
                    echo "<td id='flag' title='" . $sBez . "'>"  . $sTemp . "</td>";
                }

不幸的是,它不能正常工作。代码可以工作,但按位和按位的顺序在这里似乎不正确。我有假阳性和假阴性。 我在谷歌上搜索了一下,但说实话,我不知道该搜索什么。PHP不是我最擅长的领域。
如果您能提供任何帮助,我将不胜感激。

按位运算和整数运算,您试图在字符串上使用它

将$sFlags更改为$sFlags=0x000000000000C19B;在你的测试中


当你从mysql中选择它们时,请取消显示标志

不幸的是,它不起作用。这不是任何人都可以处理的问题描述。是的,你的实际问题还不清楚。当然,您可以在php中使用位AND运算符。但目前还不清楚你的代码实际上是用来做什么的。对不起,我认为有了这些信息就足够了。好的,代码可以工作,但是按位和按位的代码在这里似乎不正确。我有假阳性和假阴性。非常感谢!这是拼图中缺失的一块。但是,我从mysqli结果行中获取了标志,并且找不到UNHEX的位置。但是我在字符串前面加了0x,并在PHP脚本中使用了hexdec。这也很好用。