В настоящее время я работаю с побитовой функцией XOR в PHP и пытаюсь определить причину, по которой я не получаю ожидаемый результат. Я жестко закодировал значения и обнаружил, что при вызове функции, содержащей эхо, я получаю только числа в моей строке. Но если я выведу переменную, содержащую те же данные, я получу ожидаемый результат.
<?php
include "bitwise.php";
echo $t . "<br>";
temp("1234");
?>
Я звоню по приведенному ниже коду из приведенного выше кода.
$t = (((((("1324" ^ $h1) . "1234") ^ $h2) . ("1324" ^ $h1)) ^ $h3) . ((("1324" ^ $h1) . "1234") ^ $h2) ^ $h5);
function temp($str)
{
$test = (((((("1324" ^ $h1) . "1234") ^ $h2) . ("1324" ^ $h1)) ^ $h3) . ((("1324" ^ $h1) . "1234") ^ $h2) ^ $h5);
echo $test;
return $test;
}
$h#
Строки содержат набор символов, которые остаются постоянными для обеих попыток. Выходы:
$t
Le7KXh}*J;GKUqzo9
$test
9223372036854775807
Я хотел бы знать, почему я получаю только цифры во втором примере
В качестве переменных h1
в h5
определяются вне области действия функции, они интерпретируются как строка, а не как их значения.
Попробуйте добавить следующую строку в вашу функцию:
global $h1, $h2, $h3, $h4, $h5;
И это должно работать.
Посмотрите на этот код для справки: http://sandbox.onlinephpfunctions.com/code/a801c15422b69cc2d7ba067e70a5077abe03c1a9
Других решений пока нет …