Сповіщення
Очистити все

Бінарні файли


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

Бінарні файли

 

Ця стаття є вступом до бінарних файлів.

Перед читанням інших статей з категорії "Формати файлів", спочатку слід ознайомитися з цією.

Структура

У двійкових файлах байти представлені у зворотному порядку.

Наприклад, число 0x12345678 у файлі виглядатиме так: 78 56 34 12.

Типи даних

Введемо позначення типів даних.

Ці позначення будуть використовуватись в інших статтях.

Позначення Тип Діапазон Розмір (в байтах)
B Ціле число 0 ... 255 1
H Ціле число 0 ... 65535 2
I Ціле число 0 ... 4294967295 4
i Ціле число -2147483648...2147483647 4
f Дробове число - 4
s Рядок - -

У деяких файлах значення може зберігатися не у всьому байті, а лише в його частині (наприклад, у 4 бітах).

У результаті один байт зберігатиме два значення.

У статтях про двійкові файли розміри вказуватимуться або в бітах, або в байтах.

Рядки обов'язково мають наприкінці нульовий байт, який вказує на те, що рядок закінчився. Наприклад: "test_string0x0".

В результаті довжина рядка дорівнює кількості символів у ній + 1 (нульовий байт).

Блоки

У X-Ray деякі бінарні файли мають формат RIFF.

Такі файли мають блоки (ще їх називають чанками чи секціями).

Блок – це двійкові дані із заголовком.

Структура блоку

Дані Тип
Ідентифікатор H
Стиснення H
Розмір вмісту (в байтах) I
Вміст Двійкові дані

За ідентифікатором можна зрозуміти, що зберігається у конкретному блоці.

Якщо стиснення встановлено в 0x0000, то блок не стиснутий, а якщо встановлено в 0x8000, то блок стиснутий за методом Хафмана.

Для декомпресії стислих блоків можна використовувати програму з xray_re_tools (trunk\garbage\lzhuf\lzhuf.c)

У файлах фінальної версії гри більшість блоків не стиснуті.

Розмір вмісту блоку вказує лише кількість байт даних (не включаючи байти ідентифікатора, стиснення та розміру).

Двійкові дані блоку можуть бути представлені вкладеними блоками.


   
Цитата