public class MsgCompressHelper
{
public static byte[] Compress(string str, Encoding encoding)
{
return Compress(ConvertStringToBytes(str, encoding));
}
public static string Decompress(byte[] bts, Encoding encoding)
{
return ConvertBytesToString(Decompress(bts), encoding);
}
public static byte[] Compress(byte[] uncompressed)
{
using (MemoryStream ms = new MemoryStream())
using (GZipStream gzs = new GZipStream(ms, CompressionMode.Compress))
{
gzs.Write(uncompressed, 0, uncompressed.Length);
gzs.Close();
return ms.ToArray();
}
}
public static byte[] Decompress(byte[] compressed)
{
byte[] buffer = new byte[4096];
using (MemoryStream ms = new MemoryStream(compressed))
using (GZipStream gzs = new GZipStream(ms, CompressionMode.Decompress))
using (MemoryStream uncompressed = new MemoryStream())
{
for (int r = -1; r != 0; r = gzs.Read(buffer, 0, buffer.Length))
if (r > 0) uncompressed.Write(buffer, 0, r);
return uncompressed.ToArray();
}
}
public static byte[] ConvertStringToBytes(string str, Encoding encoding)
{
if (str == null)
return null;
if (encoding == null)
throw new Exception("Input encoding cannot be null.");
return encoding.GetBytes(str);
}
public static string ConvertBytesToString(byte[] bts, Encoding encoding)
{
if (bts == null || bts.Length <= 0)
return null;
if (encoding == null)
throw new Exception("Input encoding cannot be null.");
return encoding.GetString(bts);
}
}
基于Gzip的压缩解压缩帮助类
最新推荐文章于 2022-08-13 22:28:17 发布