C#LZW压缩和解压缩

时间:2020-10-27 11:47:33

标签: c# algorithm lzw

我看过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>的内容。

1 个答案:

答案 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)
相关问题