【问题标题】:how to detect quickly if a string is zlib compressed?如何快速检测字符串是否被 zlib 压缩?
【发布时间】:2011-03-16 08:48:57
【问题描述】:

在python中确定字符串是否被zlib压缩的最快方法是什么。我目前正在使用它。

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

我相信还有更优雅的方式。

【问题讨论】:

  • 永远不要使用空的except: - 它会得到错误的结果。改用except zlib.error: 来捕获正确的错误。
  • 好建议。谢谢。

标签: python zlib


【解决方案1】:

您可以检查头信息的前 2 个字节 - 但是,它不是 100% 安全的。

参见http://www.faqs.org/rfcs/rfc1950.html,第 2.2 章

【讨论】:

  • 您可以对单个字符(例如,ord(your_str[0]))使用 ord() 来获取该 ascii 字符的整数值。然后,您可以使用按位运算符(&|^)检查特定位。
  • 感谢您提供的信息,我应该检查什么?如果字符串被解码,前 2 个字节应该是什么?
【解决方案2】:

虽然 100% 确定的唯一方法是实际尝试解压缩它,但您可以通过查找 zlib 压缩方法 + 标志头位来做出合理的猜测:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多