我看过SharpZipLib库,但是我不知道如何在该库中使用LZW。
例如,我有一个List<int>
位要压缩的位。
假设List<int> bits
包含以下元素{1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,1,0,1,1,1}
如何使用LZW SharpZipLib或任何其他LZW库压缩此文件。
我尝试查看文档和ICSharpCode.SharpZipLib.Lzw
,但没有发现任何可以帮助我压缩上述List<int>
的内容。
答案 0 :(得分:1)
SharpZibLib仅允许decompressing LZW的特定格式,即Z file format。
有关使用LZW压缩数据的代码,请参见堆栈溢出问题LZW Data Compression。至于您的数据,我建议将这些位打包成字节,从BitArray创建一个字节数组,然后在该字节数组上创建一个MemoryStream。
是这样的:
var bitArray = new BitArray(bits.Select(b => b == 1).ToArray());
var byteArray = new byte[bits.Length / 8];
bitArray.CopyTo(byteArray, 0);
// do the compression magic on byteArray, or a new MemoryStream(byteArray)