Лекция 7. Форматы данных стандартных типов
Все данные в компьютере хранятся так, чтобы можно было надежно получать доступ к ним. Для этого многие производители программного обеспечения используют стандартные типы файлов, то есть такие, которые имеют открытое описание своего формата и доступ к которым может быть осуществлен и другими программами, которые также используют этот формат.
Например, подавляющее большинство программ-архиваторов помимо своего формата архива поддерживают открытый формат ZIP. Описание его доступно в интернете, а компания-разработчик стандарта PKWARE открыла исходный код (текст программ) для работы с архивами этого формата, его тоже можно свободно скачивать в Интернете (Info-Zip.org). Этот же формат используется для сжатия интернет-трафика. Большинство браузеров позволяют работать со сжатыми в таком формате данными и при соединении с сервером сообщают ему о этой своей готовности.
Один из алгоритмов метода сжатия (LZW) использует и стандарт файлов PDF.
Рис. 1. Пример данных PDF файла (Portable Document Format)
%PDF-1.1
1 0 obj
<<
/Filter [/ASCII85Decode /LZWDecode ]
/Length 459
>>
stream
...
endstream
endobj
На (Рис. ) показан пример такого файла. В нем в текстовом формате описываются разные объекты документа. К некоторым из них для сжатия могут применяться фильтры. Например, для чтения объекта 1 нужно применить фильтры ASCII85 и LZW. Сами двоичные данные объекта идут между строками stream и endstream.
Сам PDF с 1 июля 2008 года является открытым стандартом ISO 32000 и его тоже умеют понимать многие программы.
1. Определение типов данных
Во многих случаях тип данных, представленный в файле может быть определен из имени файла (в Windows – из расширения). В силу того, что на имя файла и расширение требований нет, их может быть бесконечно много. Некоторые типичные наименования для различных программ можно посмотреть в справочниках. Часть данных одного из них представлена в таблице.
Таблица 1. Пример описания расширений файлов (до буквы «c»)
Расширение |
Содержание |
Программа |
!ut |
Незавершенная закачка |
μTorrent |
$$$ |
Временный файл |
|
$ED |
Временный файл редактора |
MS C |
??_ |
Упакованный файл Microsoft |
Expand |
nnn |
Тома архива Rar вплоть до 999 |
RAR |
1CD |
Файл базы данных 1С:Предприятия 8 (файловая версия) |
1С:Предприятие 8 |
1ST |
Usually README.1ST text file |
|
386 |
Windows virtual device driver |
Win |
3DS |
3D Studio Graphics format |
3D Studio |
3GP |
3rd generation mobile video |
Win |
4MD |
Musical file |
|
7Z |
Архив 7zip |
7 zip |
Ann |
Многотомный ARJ архив |
ARJ |
ACE |
Архив |
WinACE |
ACL |
список автозамен |
MS Office |
|
|
|
ARC |
Архив |
ARC — PKARC/PKXARC — PKPAS — PKUNPAK — QUARK |
ARC |
Архив |
SQUASH |
ARJ |
Архив |
ARJ — ARJZ |
BAK |
Файл резервной копии |
|
BAT |
Файл команд DOS |
DOS |
BK? |
Резервная копия |
|
BMP |
OS/2 или Win графический формат (BitMap Picture) |
QPeg — CorelDraw — PC Paintbrush — и многие другие |
BZ2 |
Архив bzip2 |
bzip2 |
C |
Исходный текст программы на языке C |
Watcom C/C++ и многие другие |
C |
Unix file archive |
COMPACT |
CAB |
Сжатый файл Win 95 |
Win 95 |
CAS |
Исходный текст программы на языке C со вставками на ASM |
Turbo C |
CDA |
CD-Audio |
Win95 |
DR |
Рисунок в векторном формате |
CorelDraw |
CMD |
Command |
dBASE - Waffle |
CMD |
OS/2 batch/REXX file, Win cmd |
Win, OS/2 |
CPP |
C++ language source |
|
CRK |
Crack file (usually text) |
|
CSS |
Data file |
|
CSV |
Comma Separated Values text file format (ASCII) |
|
Когда имя утрачено (файл переименован) или программой, которой принадлежит файл, специально используется нестандартное его наименование, возможно распознавание типа данных другими программами, рассчитанными на просмотр файлов разного типа.
В некоторых случаях программы, позволяющие получить доступ к документу (базе данных), использовать невозможно. Например, если данные находятся на диске, который доступен только для чтения, а программе нужен доступ для чтения-записи; если данные расположены в свободной области диска (не в файле) или были восстановлены из потерянной цепочки кластеров на диске. В таких случаях приходится ориентироваться на внутреннее представление данных, то есть на их форматы, и на специальную разметку, которую используют программы.
Иногда во внутреннем представлении возможно обнаружить сигнатуру данных – уникальную комбинацию байт, используемую для идентификации данных. Некоторые программы свои данные помечают сигнатурами для последующей проверки этого признака. Иногда сигнатура объяснима (например, содержит в себе название программы). Иногда число само по себе не несёт никакого смысла (автор программы мог свой день рождения закодировать). Подобные числа были иронично названы магическими, в настоящее время это название закрепилось как термин.
Например, любой откомпилированный класс языка Java начинается с «магического числа» 0xCAFEBABE. Сомнительно, чтобы это число было как-то связано с английским Cafe Babe.
Таблица 2. Примеры сигнатур некоторых типов файлов
Тип
|
Сигнатура файла |
Положение |
.rar |
Rar!
|
В начале файла |
.zip |
PK |
В начале архива, в начале каждого архивного файла, в начале оглавления в конце файла |
.exe |
MZ
|
В начале файла |
.doc |
РП в кодировке Windows |
В начале файла |
|
Текст в Юникоде |
С адреса A00 |
.jpg |
JFIF |
С адреса 06 |