вегуд
24.12.2005, 19:31
Не оставляю надежды, что кому-то из посетителей это интересно :rolleyes:
начну издалека (для тех кто прогуливал информатику :) )
что такое формат файла и зачем он нужен.
формат файла - это его структура, определяющая расположение
информационных блоков, плюс способ представления данных.
обычно, структура файла предусматривает наличие
так называемой сигнатуры (подписи), которая отличает один
формат от другого. как правило, подпись располагается в самом начале файла.
например, у zip-файлов это "PK", у bmp - "BM", у EXE - "MZP",
сигнатура BIG-файлов - "BIGF" или "BIG4"... в этом можно убедиться, открыв
файлы в hex-редакторе или просто в FAR-е (установите себе Far. www.rarlab.com. Для жителей exUSSR он бесплатен).
вот текстовый файл. он не имеет структуры - она и не нужна, потому что это
просто однородные данные (около 100 различных символов, которые мы можем понять)
в чистом виде, как они есть.
а вот, например, картинка. картинка - это как ни крути -
набор точек, которые представлены в виде чисел.
эти числа обозначают номер цвета в палитре.
невозможно просто прочитать эти числа и вывести картинку.
нужно хотя бы знать, сколько она в длину и сколько в высоту.
вот с этого места уже появляется определенная структура.
плюс палитра. может быть она тоже хранится в файле
с картинкой. следовательно нужно указать, где
палитра, а где сама картинка. структура усложняется...
насчет упомянутого выше способа представления данных.
например, если в палитре 256 цветов, то один пиксель
может быть описан числом от 0 - 255. такое число будет занимать
ровно 1 байт. можно просто записать N пикселей в виде
N байт и это будет просто как грабли (так устроен формат BMP)
но тогда бы у нас картинки занимали по 2-3 мегабайта.
поэтому придумывают такие способы записи этих пикселей,
чтобы сократить размер файла. получается, что в зависимости
от самого изображения файл будет то больше, то меньше.
потому что пустую картинку с белым фоном можно записать как
картинка 100х100, цвет пикселя: 1, количество пикселей: 10000.
и не обязательно при этом прописывать каждый белый пиксель.
примерно делается в формате GIF. поэтому он дает
плохое сжатие для избражений с градиентами и выигрывает по размеру
у JPEG'а, если на картинке изобилуют места с однородным фоном.
в любом случае, содержимое файла и методы использования этого
содержимого определяют его формат, его структуру.
и еще: бывает что сначала придумывают формат файла, как стандарт,
а потом пишут программы которые с ним работают.
а бывает, что сначала пишут программу, и на ходу придумывают
форматы файлов, которые являются отражением того как программист
структурирует данные в своей программе.
возвращаясь к теме... :o
BIG-файлы. что это такое?
это файлы, которые содержат другие файлы.
что-то навроде архивов с нулевым сжатием.
зачем они такие нужны?
например в фифе около 10000 файлов
текстуры футболок, 3д модели лиц, и всякое прочее говно
если бы 10000 файлов по отдельности лежали в каталоге,
то занимали бы больше места чем если бы их засунуть
в один файл. так устроена файловая система FAT или NTFS.
на каждый файл отводится какое-то место кратное определенному
числу (не вдаваясь в подробности про всякие сектора и кластеры...)
как правило файл не занимает всего места, что ему отведено,
но место оказывается как-бы занятым. при наличии большого
числа файлов эти "незанятые" хвостики складываются
в солидные мегабайты.
можете проверить, посмотрев в виндовсе правой кнопкой свойства папки или файла.
в свойствах будет два размера:
"размер" - сколько по сути занимают файлы
и
"да диске" - сколько эти файлы отъедают места на самом деле.
слабонервных разница может шокировать.
например 100 файлов по 1 байтку, казалось бы должны
занимать 100 байтиков. а получается порядка 2-3 мегабайт (в зависимости от размера диска).
снова, возвращаясь к теме... :eek:
таким образом, структура BIG-файла такова:
указано общее число подфайлов (назовем их так) в BIG-файле.
затем идет таблица, содержащая
- размер подфайла,
- смещение подфайла (кол-во байт от начала до места, где лежит содержимое подфайла)
- имя подфайла.
затем идет содержимое всех подфайлов, помещенных в данный BIG.
данная структура позволяет без проблем найти и извлечь
нужный подфайл из BIG'а.
замечу, что в PES5 применяется формат ASF,
аналогичный по функции BIG файлам и
практически аналогичный им по структуре...
с той разницей, что в ASF нет имени подфайла
(недавно узнал что песоиды называют подфайлы "слотами" :) )
более детально, позже, в следующем посте...
а то сегодня что-то заносит не в ту степь.. :confused:
начну издалека (для тех кто прогуливал информатику :) )
что такое формат файла и зачем он нужен.
формат файла - это его структура, определяющая расположение
информационных блоков, плюс способ представления данных.
обычно, структура файла предусматривает наличие
так называемой сигнатуры (подписи), которая отличает один
формат от другого. как правило, подпись располагается в самом начале файла.
например, у zip-файлов это "PK", у bmp - "BM", у EXE - "MZP",
сигнатура BIG-файлов - "BIGF" или "BIG4"... в этом можно убедиться, открыв
файлы в hex-редакторе или просто в FAR-е (установите себе Far. www.rarlab.com. Для жителей exUSSR он бесплатен).
вот текстовый файл. он не имеет структуры - она и не нужна, потому что это
просто однородные данные (около 100 различных символов, которые мы можем понять)
в чистом виде, как они есть.
а вот, например, картинка. картинка - это как ни крути -
набор точек, которые представлены в виде чисел.
эти числа обозначают номер цвета в палитре.
невозможно просто прочитать эти числа и вывести картинку.
нужно хотя бы знать, сколько она в длину и сколько в высоту.
вот с этого места уже появляется определенная структура.
плюс палитра. может быть она тоже хранится в файле
с картинкой. следовательно нужно указать, где
палитра, а где сама картинка. структура усложняется...
насчет упомянутого выше способа представления данных.
например, если в палитре 256 цветов, то один пиксель
может быть описан числом от 0 - 255. такое число будет занимать
ровно 1 байт. можно просто записать N пикселей в виде
N байт и это будет просто как грабли (так устроен формат BMP)
но тогда бы у нас картинки занимали по 2-3 мегабайта.
поэтому придумывают такие способы записи этих пикселей,
чтобы сократить размер файла. получается, что в зависимости
от самого изображения файл будет то больше, то меньше.
потому что пустую картинку с белым фоном можно записать как
картинка 100х100, цвет пикселя: 1, количество пикселей: 10000.
и не обязательно при этом прописывать каждый белый пиксель.
примерно делается в формате GIF. поэтому он дает
плохое сжатие для избражений с градиентами и выигрывает по размеру
у JPEG'а, если на картинке изобилуют места с однородным фоном.
в любом случае, содержимое файла и методы использования этого
содержимого определяют его формат, его структуру.
и еще: бывает что сначала придумывают формат файла, как стандарт,
а потом пишут программы которые с ним работают.
а бывает, что сначала пишут программу, и на ходу придумывают
форматы файлов, которые являются отражением того как программист
структурирует данные в своей программе.
возвращаясь к теме... :o
BIG-файлы. что это такое?
это файлы, которые содержат другие файлы.
что-то навроде архивов с нулевым сжатием.
зачем они такие нужны?
например в фифе около 10000 файлов
текстуры футболок, 3д модели лиц, и всякое прочее говно
если бы 10000 файлов по отдельности лежали в каталоге,
то занимали бы больше места чем если бы их засунуть
в один файл. так устроена файловая система FAT или NTFS.
на каждый файл отводится какое-то место кратное определенному
числу (не вдаваясь в подробности про всякие сектора и кластеры...)
как правило файл не занимает всего места, что ему отведено,
но место оказывается как-бы занятым. при наличии большого
числа файлов эти "незанятые" хвостики складываются
в солидные мегабайты.
можете проверить, посмотрев в виндовсе правой кнопкой свойства папки или файла.
в свойствах будет два размера:
"размер" - сколько по сути занимают файлы
и
"да диске" - сколько эти файлы отъедают места на самом деле.
слабонервных разница может шокировать.
например 100 файлов по 1 байтку, казалось бы должны
занимать 100 байтиков. а получается порядка 2-3 мегабайт (в зависимости от размера диска).
снова, возвращаясь к теме... :eek:
таким образом, структура BIG-файла такова:
указано общее число подфайлов (назовем их так) в BIG-файле.
затем идет таблица, содержащая
- размер подфайла,
- смещение подфайла (кол-во байт от начала до места, где лежит содержимое подфайла)
- имя подфайла.
затем идет содержимое всех подфайлов, помещенных в данный BIG.
данная структура позволяет без проблем найти и извлечь
нужный подфайл из BIG'а.
замечу, что в PES5 применяется формат ASF,
аналогичный по функции BIG файлам и
практически аналогичный им по структуре...
с той разницей, что в ASF нет имени подфайла
(недавно узнал что песоиды называют подфайлы "слотами" :) )
более детально, позже, в следующем посте...
а то сегодня что-то заносит не в ту степь.. :confused: