pack/unpack (разбор бинарного файла)

jeno

Новичок
pack/unpack (разбор бинарного файла)

честно говоря, так и толком не понял как работает pack/unpack...

да и на форуме эта тема толком не обсуждалась...
что мне надо: надо читать/записывать в бинарный файл какие-то данные...
например, для начала поставил целью считать ID3 теги из MP3 файла (год,альбом,артист и т.д.)... + это даже может пригодится ;)

загорелся после того как наткнулся на эту страничку:
http://omsk777.ru/all.php?act=funct&argument=imagecreate

на ней скрипт, который разбирает bmp, и рисует его средствами GD...

вот например:
PHP:
<?
header("Content-Type: text/plain");
$fp=fopen("1.bmp","r");

print_r(unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset",fread($fp,14)));

print_r(unpack('Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel'.
'/Vcompression/Vsize_bitmap/Vhoriz_resolution'.
'/Vvert_resolution/Vcolors_used/Vcolors_important',fread($fp,40)));

fclose($fp);
?>
вернет:

Код:
Array
(
    [file_type] => 19778
    [file_size] => 1532966
    [reserved] => 0
    [bitmap_offset] => 54
)
Array
(
    [header_size] => 40
    [width] => 857
    [height] => 596
    [planes] => 1
    [bits_per_pixel] => 24
    [compression] => 0
    [size_bitmap] => 1532912
    [horiz_resolution] => 0
    [vert_resolution] => 0
    [colors_used] => 0
    [colors_important] => 0
)

хотелось бы так же с ID3 тегами в mp3 + понять как это все работает :)


вот например кусочек:

PHP:
unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset",fread($fp,14));
а именно

Код:
"vfile_type/Vfile_size/Vreserved/Vbitmap_offset"
file_type,file_size и т.д. это переменные которые запакованы в бинарный код??
для каждого файла они уникальны?
откуда их можно узнать? (подозреваю что вы меня счас пошлете в гугл)
эти данные (тип файла, размер и т.п.) всегда хранятся в первых 14 битах файла?

обьясните пожалуйста! думаю это не одному мне интересно!
 

SiMM

Новичок
[m]pack[/m]/[m]unpack[/m]
> откуда их можно узнать?
Из спецификации формата файла.
 

jeno

Новичок
ок, значит во всех бинарный файлах есть такие переменные, только нужно знать как они называются и где находятся...

а вот откуда узнать где они находятся? это тоже должно быть в спецификации? (например у bmp эти переменные в первых 14 битах)
 
Сверху