我是一名实习生,正在研究在软件中使用 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);
}
我想创建类似的功能bool isBrotliEncoded()
。我想知道是否可以使用 Brotli 编码的缓冲区进行类似的快速检查?我查看了 brotli 生成的一些压缩文件的字节值,但我找不到适用于所有文件的规则。有些以 开头0x5B
,有些以开头0x1B
,空文件的压缩结果为0x06
,并且多次压缩的文件以一系列不同的值开头。每个文件的结尾也不一致。
我知道的唯一测试格式是否正确的方法是尝试解压缩并等待错误,这违背了进行此测试的目的。
所以我的问题是:有谁知道如何在不尝试解压缩并等待失败的情况下检查缓冲区是否已用 Brotli 压缩?