Формат файлов GCF/NCF

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
Аватара пользователя
[email protected]!c_V()1D
Разработчик
Разработчик
Сообщения: 2635
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

#16 Сообщение 05.07.2011, 12:34

А мне вот интересно, а в заголовке Dummy0 не может быть старшими 4 байтами общего 64-разрядного числа размера?

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#17 Сообщение 09.07.2011, 08:47

[email protected]!c_V()1D
Нет. Эта часть заголовка и тут == 0 (проверил на team fortress 2 content.gcf). Точный размер файла можно вычислить двумя путями:
  1. Взяв значение FileHeader.FileSize+0x100000000;
  2. Вычислив значение DataHeader.FirstClusterOffset + DataHeader.ClusterCount*DataHeader.ClusterSize (получается точное значение).
Как-то так. Конечно, может быть это можно вычислить и через другие заголовки, но это самые очевидные пути.
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
[email protected]!c_V()1D
Разработчик
Разработчик
Сообщения: 2635
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

#18 Сообщение 09.07.2011, 10:43

Да, как обойти-то эту штуку я знаю. Просто интересно стало - мало ли...

И да, первым способом на байт меньше потому, что тебе нужно складывать это не с нижними 32 битами, а с верхними. И ровно 4 Гб это как раз 0хFFFFFFFF+1

Ответить