私は入力であるベクター(char配列の単なるラッパーです)を持っています。 pkzipは、c#sharpZipLibを使用して作成されました。minizipを使用してchar配列を解凍する
私はチェックアウトした16進エディタのzipテンプレートを使って実行したファイルにデータを保存しました。入力は良いですが、それは不正な形式ではありません。これは、圧縮されたデータを除くすべて:
50 4B 03 04 14 00 00 00 08 00 51 B2 8B 4A B3 B6
6C B0 F6 18 00 00 40 07 01 00 07 00 00 00 2D 33
31 2F 31 32 38
<compressed data (6390 bytes)>
50 4B 01 02 14 00 14 00 00 00 08 00 51 B2 8B 4A
B3 B6 6C B0 F6 18 00 00 40 07 01 00 07 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 2D 33
31 2F 31 32 38 50 4B 05 06 00 00 00 00 01 00 01
00 35 00 00 00 1B 19 00 00 00 00
私は出力する別のベクトルを持っています。膨らんだデータには約67-68kのデータがあるので、バッファに収まることがわかります。
私の人生のために、私は前者を膨らませて後者に保管するためにミニジップを得ることができません。
これは私がこれまで持っているものです。
#include "minizip\zlib.h"
#define ZLIB_WINAPI
std::vector<unsigned char> data;
/*...*/
std::vector<unsigned char> outBuffer(1024 * 1024);
z_stream stream;
stream.zalloc = Z_NULL;
stream.zfree = Z_NULL;
stream.opaque = Z_NULL;
stream.data_type = Z_BINARY;
stream.avail_in = data.size();
stream.avail_out = outBuffer.size();
stream.next_in = &data[0];
stream.next_out = &outBuffer[0];
int ret = inflateInit(&stream);
ret = inflate(&stream, 1);
ret = inflateEnd(&stream);
私は方法をステップとret
を監視するために、デバッガを使用していました。メッセージ"incorrect header check"
でinflate
に戻り値-3を返します。
これはzlib
のラッパーですpkzip
、ですが、minizip
は、pkzip
をサポートする必要がありますzlib
のラッパーライブラリである必要があり、それはすべきではありませんか? これを修正するにはどうすればよいですか?
'nullptr'を返すのは何ですか?値によって渡されたときに 'data'を変更しないので、あなたの関数は本質的に何もしません。 – ForceBru
私はそれをテストしようとしています、私はホルダーとしてnullptrを使用しました。私は、メソッドの残りの部分を実装する前に、VSウォッチャーを介してインフレーションの動作を確認したかったのです。編集:それはいくつかの意味があるように修正されました。 – Karlovsky120
なぜ私はofftopicですか? – Karlovsky120