PHP-无法理解这行代码中发生了什么

时间:2011-03-31 17:56:20

标签: php vb.net loops

        for($reg3=0; $reg3<128; $reg3++)
        {
             $reg1[$reg3] = $reg1[$reg3] ^ ($reg6[$reg3+256] & 1);
        }

我真的不明白这里发生了什么$reg1[$reg3] ^ ($reg6[$reg3+256] & 1); 什么是vb.net等效代码。

3 个答案:

答案 0 :(得分:3)

它在两个操作数之间执行bitwise XOR,其中一个操作数是通过将bitwise AND应用于另外两个操作数而生成的。除此之外,它是标准的数组索引和添加。

如果表达式的类型支持这些运算符,VB.Net代码将完全相同(我们不知道变量的值是什么)。

答案 1 :(得分:1)

^&是二进制/按位运算符 - 更多信息:Bitwise Operators

^ - Xor(独家或)
& - 和

我猜这是重新编译的代码或混淆 - 如果不是,那些可怕的变量名称。

切换更传统的变量名称:$reg3 - &gt; $i$reg1 - &gt; $a$reg6 - &gt; {{1}我们得到:

$b

它遍历数组的前128个元素(或者字符串)for($i=0; $i<128; $i++) { $a[$i] = $a[$i] ^ ($b[$i+256] & 1); } 。对于每个元素,将它($a)与数组(或字符串)^ ($b...中的元素的最后一位(& 1)进行异或(其中256位)。 $b必须至少为128个元素,$a必须至少为384个元素。

答案 2 :(得分:1)

&安培;是一个按位 AND 运算符。

^是按位 XOR 运算符。