ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

запись бинарных данных php
  #1  
Старый 07.10.2008, 09:56
mr.celt
Участник форума
Регистрация: 06.02.2008
Сообщений: 110
Провел на форуме:
217423

Репутация: 32
По умолчанию запись бинарных данных php

Стоит задача слопатить бинарный файл с помощью php. Научился запихивать по одному байту, типа так
"fwrite($fh,pack("c", $value))", а как записать например число 150 в 3 байта?
 
Ответить с цитированием

  #2  
Старый 07.10.2008, 10:35
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме:
3244717

Репутация: 1980
Отправить сообщение для [Raz0r] с помощью ICQ
По умолчанию

Цитата:
а как записать например число 150 в 3 байта?
150 - это 1 байт, чтобы получить три байта нужно прибавить еще два нулл байта:
pack("cxx", 150);
 
Ответить с цитированием

  #3  
Старый 07.10.2008, 11:04
mr.celt
Участник форума
Регистрация: 06.02.2008
Сообщений: 110
Провел на форуме:
217423

Репутация: 32
По умолчанию

здорово,) теперь почти все ясно, как я понимаю 100000 занимает 3 байта, а вот как его записать ровно в 3 байта, когда использую pack("f", 100000); выделяется 4.
 
Ответить с цитированием

  #4  
Старый 07.10.2008, 11:28
mr.celt
Участник форума
Регистрация: 06.02.2008
Сообщений: 110
Провел на форуме:
217423

Репутация: 32
По умолчанию

Все дальше сам разобрался, сделал вот так

if (0 <= $size && $size < 256) fwrite($fh,pack("xxc", $size));
elseif (256 <= $size && $size < 65536) fwrite($fh,pack("xn", $size));
else
{
$pref = $size % 65536;
$main = ($size - $pref) / 65536;
fwrite($fh,pack("c", $main));
if (0 <= $pref && $pref < 256) fwrite($fh,pack("xc", $pref));
elseif (256 <= $pref && $pref < 65536) fwrite($fh,pack("n", $pref));
}
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Что такое Php? PAPA212 Болталка 13 28.12.2007 20:44
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31
Защищаем MySql. Шаг за шагом k00p3r Чужие Статьи 0 13.06.2005 11:18



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ