C# LZW 压缩与解压
C# LZW Compression and Decompression
我查看了 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>
的内容。
SharpZibLib 只允许 decompressing LZW from a particular format, namely the Z file format.
查看 Stack Overflow 问题 LZW Data Compression for code to compress data using LZW. As for your data, I'd suggest packing those bits into bytes, create a byte array from a 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)
我查看了 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>
的内容。
SharpZibLib 只允许 decompressing LZW from a particular format, namely the Z file format.
查看 Stack Overflow 问题 LZW Data Compression for code to compress data using LZW. As for your data, I'd suggest packing those bits into bytes, create a byte array from a 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)