Для достижения некоторой цели нужно преобразовать бинарные данные в десятичное представление, а затем наоборот.
Преобразовываю (использую BCmath, т.к. получается очень большое целое число):
Код:
<?php
function mybindec($binary = "")
{
$result = "";
for($i = 0; $i < strlen($binary); $i++)
{
$num = unpack("Cint", $binary[$i]);
$result = bcadd($result, bcmul($num["int"], bcpow(2, bcsub(strlen($binary), bcadd($i, 1)))));
}
return $result;
}
$string = "BinaryData";
$dec = mybindec($string);
echo($dec);
?>
Проблема в том, что не получается обратить этот процесс:
Код:
<?php
/*
...
Некоторые действия...
...
*/
$result = pack("C*", $dec);
echo $result;
?>
Если одному символу, например, "a", то $result нормальный, т.е. тоже равен "a".
Если нет, то либо появляется другой символ, либо квадратик, означающий, что нет такого символа в данной кодировке.
Помимо прочего есть другая проблема. Если
dec получается очень большим (больше десяти знаков) и pack() вообще выдает "яяяяя..." ("я", кстати, имеет код "255").
Не знаете, как можно самому получить бинарные данные?
P.S. Зря Вы автоматически добавляете тег "math" около двух "$". Я не хотел формулу писать, а просто написал имена двух переменных в PHP.