Бинарные Данные

  • Автор темы Автор темы Sergey_2003
  • Дата начала Дата начала

Sergey_2003

Guest
Бинарные Данные

Здравствуйте уважаемый ALL!
Может, кто сталкивался с такой проблемой:

Есть файл BMP-шник, описание структуры BMP-шника в инете валом, вот только как работать с бинарными данными в PHP, нигде не нашёл.

Объясните не умному, или ткните носом в ман, как вытащить из бинарного файла данные в виде:
От 0-2 байта -> Сигнатура "BM"
от 2-4 байта -> Размер файла
от 10-14 байта -> Смещение изображения от начала файла
от 28 -30 байта -> Глубина цвета, бит на точку
от 46-50 байта -> Число используемых цветов
и т.д.

P.S. большая просьба не рассказывать о том, как хорошо можно использовать «Image functions», задача сугубо конкретная.
Заранее благодарен.
 
очень умно, нука попробуй у себя из BMP-шника выдрать со 2-6 байт и скажи, чему равняется размер файла?
 
у тебя бмп файлом на винте валяется или ты сам его сгенерил?
если файлом то читай его побитово fseek'ом...
если ты генеришь, то вопрос видать не коректно поставлен...


su1d, если не сложно можно про pack() подробнее... недостаточное знания языка и отсутствие опыта не дают мне понять ман :( хотя очень интересно...
 
файл на винте валяяется но
PHP:
$fp=fopen($file, "rb");
fseek($fp, 2,SEEK_SET);
$data=fread($fp, 4);
echo $data."\n";
получаю hu??
а должно быть 30056
 
давайте ещё раз
PHP:
$fp=fopen($file, "rb");
fseek($fp, 2,SEEK_SET);
$data=fread($fp, 4);
$arr=unpack("nint",$data);
foreach($arr as $v) echo $v."\n";
получаем 26741
должно быть 30056

ну где грабли, чё делать?
 
мне почему то думается (после проверки у себя) что правильнее будет

...
$arr=unpack("Lint",$data);
...

от обьяснений воздержусь, бо не уверен и т.д.
 
и в прямь поGDшному работает...

всеже где выяснить что такое pack по понятние чем в пхп-мане?:confused:
 
почитай вдумчиво про [m]pack[/m](), т.к. [m]unpack[/m]() -- это то же самое, только наоборот.
проведи параллель с [m]printf[/m]()/[m]sprintf[/m]() или [m]date[/m]() -- там принцип действия практически один и тот же.
 
Всё всем спасибо за ответы, нашол в перловой книге полное описание pack/unpack, заработало. савж можно закрывать
 
Сверху