У меня есть эта функция:
def WhitespaceHexEncode(str)
result = ""
whitespace = ""
str.each_byte do |b|
result << whitespace << "%02x" % b
whitespace = " " * (rand(3) + 1)
end
result
end
Я пытаюсь сделать то же самое на php, вот код, который у меня есть:
function WhitespaceHexEncode($str)
{
$result = "";
$whitespace = "";
for($i=0;$i<strlen($str);$i++)
{
$result = $result.$whitespace.sprintf("%02x", $str[$i]);
$whitespace = " ";
for($x=0;$x<rand(0,5);$x++)
$whitespace = $whitespace." ";
}
return $result;
}
Но функция PHP не показывает тот же вывод, что и ruby, например:
print WhitespaceHexEncode("test fsdf dgksdkljfsd sdfjksdfsl")
Output: 74 65 73 74 20 66 73 64 66 20 64 67 6b 73 64 6b 6c 6a 66 73 64 20 73 64 66 6a 6b 73 64 66 73 6c
--------------------------------------------------------------
echo WhitespaceHexEncode("test fsdf dgksdkljfsd sdfjksdfsl")
Output: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Может кто-нибудь сказать мне, что не так в коде php?
ОБНОВЛЕНИЕ: Исправлено с помощью bin2hex ()