我的数组是140bytes。 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();
答案 0 :(得分:4)
您正在获取整个MemoryStream缓冲区,您需要使用ToArray(),
byte[] outArray = sOut.ToArray();
这将删除尾随零,但您仍然可以获得比输入更大的数组。压缩/加密有开销,可能大于140字节。
答案 1 :(得分:1)
许多压缩算法(我不熟悉7-zip的具体细节)会以最小输出大小生成输出。 7-zip在大型输入数据集上表现最佳,140字节不是“大”。你可能会用gzip或lzo这样的东西做得更好。您尝试了哪些其他压缩算法?