PHP代码中的位移位?

PHP代码中的位移位?,php,Php,有人能帮我理解这个古老的密码吗 $a = 00040000000002; $n = sscanf($a,"%02x%02x%02x%02x%02x%02x%02x",$r[7],$r[6],$r[5],$r[4],$r[3],$r[2],$r[1]); $ptemp = $r[1] + (($r[2] & 0x1F) << 8); $l[$i] = (($r[2] & 0xE0) >> 5) + ($r[3] << 3); $m[$i] =

有人能帮我理解这个古老的密码吗

$a = 00040000000002;
$n = sscanf($a,"%02x%02x%02x%02x%02x%02x%02x",$r[7],$r[6],$r[5],$r[4],$r[3],$r[2],$r[1]);

$ptemp = $r[1] + (($r[2] & 0x1F) << 8);
$l[$i] = (($r[2] & 0xE0) >> 5) + ($r[3] << 3);
$m[$i] = $r[4] + (($r[5] & 0x03) << 8);
$h[$i] = (($r[5] & 0xFC) >> 2) + (($r[6] & 0x03) << 6);
$dist[$i] = (($r[6] & 0xFC) >> 2) + (($r[7] & 0x0F) << 6);
$fruittoday[$i] = ($r[7] & 0xF0) >> 4;
$a=00040000000002;
$n=sscanf($a,“%02x%02x%02x%02x%02x%02x”、$r[7]、$r[6]、$r[5]、$r[4]、$r[3]、$r[2]、$r[1]);
$ptemp=$r[1]+($r[2]&0x1F)>5+($r[3]2)+($r[6]&0x03)>2+($r[7]&0x0F)>4;
我理解
sscanf
,但我不确定他们用来检查特定位是否开启的
&0x1f是怎么回事

在您提供的示例中,他们确认前5位为1,然后将所有位移到左8位。(虽然在本例中,他们似乎从0(00000000)开始,检查0x1F是否开启(00011111),这仍然是0,然后将其移到左8位(放在第2^8位)

作为参考,我想检查一下。他们列出了一些这里发生的事情的例子。如果你真的很好奇,只需在操作变量时回显它们(或将其分解为单独的操作),然后检查它们)