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%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();
Ich vermute, dass es von 'MemoryStream.GetBuffer ()'
stammtBeachten 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.