我是一名实习生,正在研究在某个软件中使用 Brotli 压缩是否比使用 GZip 的当前版本提供性能提升。
我的任务是使用 GZip 更改任何内容以使用 Brotli 压缩。我需要替换的一个函数会检查缓冲区是否包含使用 GZip 压缩的数据。它通过检查开头和结尾的流标识符来做到这一点:
bool isGzipped() const
{
// Gzip file signature (0x1f8b)
return
(_bufferEnd >= _bufferStart + 2) &&
(static_cast<unsigned char>(_bufferStart[0]) == 0x1f) &&
(static_cast<unsigned char>(_bufferStart[1]) == 0x8b);
}
Run Code Online (Sandbox Code Playgroud)
我想创建类似的功能bool isBrotliEncoded()。我想知道是否可以使用 Brotli 编码的缓冲区进行类似的快速检查?我已经查看了 brotli 生成的一些压缩文件的字节值,但我找不到适用于所有这些文件的规则。有些以 开头0x5B,有些以开头,0x1B空文件的压缩结果为0x06,并且多次压缩的文件以一系列不同的值开头。每个文件的结尾也不一致。
我所知道的测试它是否格式正确的唯一方法是尝试解压缩并等待错误,这违背了进行此测试的目的。
所以我的问题是:有谁知道如何在不尝试解压缩和等待失败的情况下检查缓冲区是否已被 Brotli 压缩?