我想将C#行转换为PHP,但它不起作用(结果不一样):
C#:
PHP:
有人知道怎么做吗?
由于
答案 0 :(得分:1)
该代码应该返回相同的结果。
我能想到的唯一问题是“$ header [$ i]”中的数据类型是一个字符串而不是整数。这会导致PHP解析$ header [$ i]的ASCII代码而不是它应该表示的值:
预期结果:
$xorKey = 16909060;
$data = 1337;
$data = ((16 * ($xorKey ^ (~$data & 0xFF)))
| (($xorKey ^ (~$data & 0xFF)) >> 4)) & 0xFF;
echo $data; // int 60
使用字符串会产生以下结果:
$xorKey = 16909060;
$data = '1337'; // HERE BE DRAGONS
$data = ((16 * ($xorKey ^ (~$data & 0xFF)))
| (($xorKey ^ (~$data & 0xFF)) >> 4)) & 0xFF;
echo $data; // int 112
解决这个问题:
$xorKey = 16909060;
$data = '1337';
$data = intval($data); // Parse this string as an integer.
$data = ((16 * ($xorKey ^ (~$data & 0xFF)))
| (($xorKey ^ (~$data & 0xFF)) >> 4)) & 0xFF;
echo $data; // int 60