Entpackte Daten werden mit '\ 0' aufgefüllt, wenn DotNetZip und MemoryStream verwendet werden

8

Ich versuche, Daten im Speicher zu zippen und zu entzippen (also kann ich FileSystem nicht verwenden), und in meinem Beispiel unten, wenn die Daten entpackt werden, hat sie am Ende eine Art Padding ('\ 0' Zeichen) meine ursprünglichen Daten.

Was mache ich falsch?

%Vor%     
Luciano 19.12.2012, 15:55
quelle

2 Antworten

8

Von MSDN

  

"Beachten Sie, dass der Puffer zugewiesene Bytes enthält, die möglicherweise nicht verwendet werden. Wenn beispielsweise die Zeichenfolge" test "in das MemoryStream-Objekt geschrieben wird, ist die Länge des von GetBuffer zurückgegebenen Puffers 256, nicht 4, wobei 252 Byte nicht verwendet werden Um nur die Daten im Puffer zu erhalten, verwenden Sie die ToArray-Methode;

Sie möchten die Zeile also tatsächlich ändern:      zipped = stream.GetBuffer();

Zur Zeile: zipped = stream.ToArray();

    
Blachshma 19.12.2012, 15:59
quelle
1

Ich vermute, dass es von 'MemoryStream.GetBuffer ()'

stammt

Ссылка

Beachten Sie, dass der Puffer zugeordnete Bytes enthält, die möglicherweise nicht verwendet werden. Wenn beispielsweise die Zeichenfolge "test" in das MemoryStream-Objekt geschrieben wird, beträgt die Länge des von GetBuffer zurückgegebenen Puffers 256, nicht 4, wobei 252 Byte nicht verwendet werden. Verwenden Sie die ToArray-Methode, um nur die Daten in dem Puffer zu erhalten; ToArray erstellt jedoch eine Kopie der Daten im Speicher.

    
Jason Whitted 19.12.2012 16:00
quelle

Tags und Links