2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Бинарные данные
Сообщение25.05.2007, 06:53 
Для достижения некоторой цели нужно преобразовать бинарные данные в десятичное представление, а затем наоборот.

Преобразовываю (использую 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".
Если нет, то либо появляется другой символ, либо квадратик, означающий, что нет такого символа в данной кодировке.
Помимо прочего есть другая проблема. Если $string - какая-то длинная строка, то $dec получается очень большим (больше десяти знаков) и pack() вообще выдает "яяяяя..." ("я", кстати, имеет код "255").

Не знаете, как можно самому получить бинарные данные?

P.S. Зря Вы автоматически добавляете тег "math" около двух "$". Я не хотел формулу писать, а просто написал имена двух переменных в PHP.

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group