1

私の配列は140バイトです。outArray は 512bytes です...私が欲しかったものではありません。また、適切に暗号化されているかどうかもわかりません。以下のコードは正しいですか?outArray が実際のサイズであり、多くの後続ゼロで固定されないようにするにはどうすればよいですか?

        var compress = new SevenZipCompressor();
        compress.CompressionLevel = CompressionLevel.Ultra;
        compress.CompressionMethod = CompressionMethod.Lzma;
        compress.ZipEncryptionMethod = ZipEncryptionMethod.Aes256;
        var sIn = new MemoryStream(inArray);
        var sOut = new MemoryStream();
        compress.CompressStream(sIn, sOut, "a");
        byte[] outArray = sOut.GetBuffer();
4

2 に答える 2

4

MemoryStream バッファ全体を取得しています。ToArray() を使用する必要があります。

  byte[] outArray = sOut.ToArray();

これにより末尾のゼロが削除されますが、入力よりも大きな配列が得られる場合があります。圧縮/暗号化にはオーバーヘッドがあり、おそらく 140 バイトより大きくなります。

于 2009-09-20T10:37:13.010 に答える
1

多くの圧縮アルゴリズム (私は 7-zip の特定の詳細に慣れていません) は、最小の出力サイズで出力を生成します。7-zip は大規模な入力データ セットで最適なパフォーマンスを発揮し、140 バイトは「大規模」ではありません。gzip や lzo などを使用すると、よりうまくいくかもしれません。他に試した圧縮アルゴリズムはありますか?

于 2009-09-20T03:24:29.133 に答える