Вопрос по decompression, compression, binary – Как определить тип сжатия, используемый для файла? (если расширение файла не указано)

40

Как определить тип сжатия файла? (при условии, что .zip, .gz, .xz или любое другое расширение не указано).

Эта информация хранится где-то в заголовке этого файла?

Ваш Ответ

3   ответа
60

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

Вы можете найти форматы заголовков в описаниях:

Описание формата Zip (.zip), начинается с 0x50, 0x4b, 0x03, 0x04 (если не пусто - тогда последние два 0x05, 0x06 или 0x06, 0x06)Gzip (.gz) описание формата, начинается с 0x1f, 0x8b, 0x08описание формата xz (.xz), начинается с 0xfd, 0x37, 0x7a, 0x58, 0x5a, 0x00

Другие:

Описание формата zlib (.zz), начинается с двух байтов (в битах) 0aaa1000 bbbccccc, где ccccc выбирается так, чтобы первый байт, рассматриваемый как int16, умноженный на 256, плюс второй байт, рассматриваемый как int16, были кратны 31. Например: 01111000 (бит) = 120 ( int16), 10011100 (биты) = 156 (int16), 120 * 256 + 156 = 30876, что кратно 31Сжатие (.Z) начинается с 0x1f, 0x9dbzip2 (.bz2) начинается с 0x42, 0x5a, 0x68
@MarkAdler нет проблем, спасибо за ответ, я ценю это! Prix
Если вы используете Linux, вот как вы смотрите в шестнадцатеричное представление первых нескольких байтов файла:xxd file jkukul
4

вы можете использовать некоторую утилиту, например TrID. Ссылка указывает на кроссплатформенную версию командной строки; для Windows тоже есть графический интерфейс.

Который находится здесь:mark0.net/soft-trid.html Nail
35

http://en.wikipedia.org/wiki/File_(command)

$ mv foo.zip dink
$ file dink
dink: gzip compressed data, from Unix, last modified: Sat Aug  6 08:08:57 2011,
max compression
$

Похожие вопросы