Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Редактирование бинарных данных

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: запись HEX в бинарный файл
Мелкий Супермодератор
Отправлено: 28 Декабря, 2009 - 13:20:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Есть бинарный файл, в котором необходимо произвести замену одного HEX значения на другое, весь HEX обработчик есть.
А вот как записать обратно изменённую HEX строку в бинарном формате?
Получилось записать только 16-ричную строку.

hex2bin функции нету, decbin(hexdec($hex)) возвращает 0

(Отредактировано автором: 28 Декабря, 2009 - 13:23:00)



-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 28 Декабря, 2009 - 13:33:52
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Функция hexdec (http://php.su/functions/?hexdec) делает не совсем то, что Вам нужно.
Для конвертации числа непосредственно из 16-й системы счисления в 2-ю можете использовать
http://forum.php.su/topic.php?fo...=35&topic=66
Однако учтите, что возвращаются строки а не бинарные данные так, как они должны быть (то есть имеется ввиду, что, например 'AFF' как строка не одно и то же, что 0xAFF)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 28 Декабря, 2009 - 13:44:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




EuGen пишет:
Однако учтите, что возвращаются строки а не бинарные данные так, как они должны быть (то есть имеется ввиду, что, например 'AFF' как строка не одно и то же, что 0xAFF)

В том-то и вопрос. Как записать именно бинарные данные? Типа "����" при текстовом чтении.

В строку-то я и сам перевести могу, таблицу перевода из 16-ричной в двоичную систему наизусть помню.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 28 Декабря, 2009 - 13:51:26
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 28 Декабря, 2009 - 14:35:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Вот, спасибо! Разобрался с pack. Получилась такая функция, обратная bin2hex:
PHP:
скопировать код в буфер обмена
  1. function hexbin($str) {
  2.         $it = strlen($str);
  3.         $ret = '';
  4.         for ($i=0;$i<$it;$i+=2) {
  5.                 $ret .= pack("H",$str[$i]) | pack("h", $str[$i+1]);
  6.                 }
  7.         return $ret;
  8. }


-----
PostgreSQL DBA
 
 Top
JustUserR
Отправлено: 28 Декабря, 2009 - 14:48:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Мелкий И не забудьте когда работаете с файлом то есть его открываете заменить спецификатор r/w на rb/wb


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Мелкий Супермодератор
Отправлено: 28 Декабря, 2009 - 14:51:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Да, это само собой, помню.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB