Как быстро определить, является ли строка сжатой zlib? - PullRequest
8 голосов
/ 16 марта 2011

Какой самый быстрый способ в python определить, была ли строка сжата zlib. Я использую это в настоящее время.

def iscompressed(data):
    result = True
    try:
        s =zlib.decompress(data)
    except:
        result = False  
    return result

Я уверен, что есть более элегантный способ.

Ответы [ 2 ]

10 голосов
/ 16 марта 2011

Вы можете проверить первые 2 байта для информации заголовка - однако, это не на 100% безопасно.

См. http://www.faqs.org/rfcs/rfc1950.html, глава 2.2

2 голосов
/ 16 марта 2011

Хотя единственный способ быть на 100% уверенным - это попытаться распаковать его, вы можете сделать разумное предположение, посмотрев метод сжатия zlib + биты заголовка flags:

http://www.faqs.org/rfcs/rfc1950.html

...