私は、ソフトウェアで Brotli 圧縮を使用すると、GZip を使用する現在のリリースよりもパフォーマンスが向上するかどうかを調査しているインターンです。
私の仕事は、GZip を使用して何かを変更し、代わりに Brotli 圧縮を使用することです。置き換える必要がある 1 つの関数は、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で圧縮されているかどうかを確認する方法を知っている人はいますか?