Ich habe einen Vektor (der nur ein Wrapper über ein Char-Array ist), der die Eingabe ist. Das PKZIP wurde mit C# sharpZipLib erstellt.Verwenden von Minizip zum Dekomprimieren eines Char-Arrays
Ich speicherte die Daten in eine Datei, die ich durchlief eine Hex-Editor-Zip-Vorlage, die ausgecheckt. Die Eingabe ist gut, es ist nicht fehlerhaft. Das alles aber die komprimierten Daten:
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
Ich habe einen anderen Vektor, der die Ausgabe sein soll. Die aufgeblähten Daten haben ungefähr 67-68k, also weiß ich, dass es in den Puffer passt.
Für das Leben von mir, kann ich nicht das Minizip bekommen, um das erstere aufzublasen und es in letzterem zu speichern. Diese
ist das, was ich bisher:
#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);
ich den Debugger verwendet, um durch das Verfahren zu Schritt und die ret
zu überwachen. inflate
Rückgabewert -3 mit Nachricht "incorrect header check"
.
Dies ist ein pkzip
, die ein Wrapper um zlib
, aber minizip
sollte eine Wrapper-Bibliothek um zlib
sein, die pkzip
unterstützen sollte, sollte es nicht sein? Wie muss ich dies ändern, um zu arbeiten?
Was ist der Sinn der Rückgabe von 'nullptr'? Sie ändern "Daten" nicht, da sie nach Wert übergeben werden, so dass Ihre Funktion im Grunde nichts tut. – ForceBru
Ich versuche es zu testen, ich habe nullptr als Halter benutzt. Ich wollte bestätigen, dass das Aufblasen über VS-Watcher funktioniert, bevor ich den Rest der Methode implementiere. EDIT: Es wurde behoben, so dass es Sinn macht. – Karlovsky120
Warum bin ich offtopic? – Karlovsky120