2010-12-03 6 views

答えて

0

qUncompressは全て圧縮されたデータは、それを解凍するQByteArrayにすることが必要かどうかは文書化されていません。それのwordingから、それはそれを暗示しているようです。私はいくつかの大きなSWFをメモリにロードするだけで、ヘッダーに数バイトを入れるのは実用的ではないと思います。

あなただけで始まるファイルを読み込み、メモリにファイル全体を読み込むと一緒に暮らすことができる場合は、QByteArrayに4をオフセットし、第一4のバイト順序を反転(SWFはリトルエンディアンであるとqUncompressはにあるように長さが必要ですbig-endian)。フリップされた32ビット整数から4を引く。次にqUncompressに電話してください。

ファイル全体をロードするのが理想的でない場合は、直接zlibのストリーム機能を使用する方がよい場合があります。これにより、データを1つずつ解凍することができます。

+0

また、ファイルの長さが圧縮されています。 – Doru

+0

http://www.adobe.com/content/dam/Adobe/en/devnet/swf/pdf/swf_file_format_spec_v10.pdf(25ページ)の仕様によれば、最初の8バイトは圧縮されていません。ファイル長(圧縮解除された)は最初の8バイトの一部です。 –

関連する問題