2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Бинарные данные
Сообщение25.05.2007, 06:53 


19/05/07
7
Для достижения некоторой цели нужно преобразовать бинарные данные в десятичное представление, а затем наоборот.

Преобразовываю (использую 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 сообщение ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group