求c#实现的gzip压缩算法源代码 如题。先谢过。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspxhttp://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx /// <summary> /// 数据压缩类,数据长度大于50000,压缩才有意义 /// </summary> public class Compress { #region 压缩 /// <summary> /// 压缩流数据 /// </summary> /// <param name="aSourceStream"></param> /// <returns></returns> public static byte[] EnCompress(Stream aSourceStream) { MemoryStream vMemory = new MemoryStream(); aSourceStream.Seek(0, SeekOrigin.Begin); vMemory.Seek(0, SeekOrigin.Begin); try { using (GZipStream vZipStream = new GZipStream(vMemory, CompressionMode.Compress)) { byte[] vFileByte = new byte[1024]; int vRedLen = 0; do { vRedLen = aSourceStream.Read(vFileByte, 0, vFileByte.Length); vZipStream.Write(vFileByte, 0, vRedLen); } while (vRedLen > 0); } } finally { vMemory.Dispose(); } return vMemory.ToArray(); } /// <summary> /// 压缩数据 /// </summary> /// <param name="aSourceStream"></param> /// <returns></returns> public static byte[] EnCompress(byte[] aSourceStream) { using (MemoryStream vMemory = new MemoryStream(aSourceStream)) { return EnCompress(vMemory); } } #endregion #region 解压 /// <summary> /// 解压数据 /// </summary> /// <param name="aSourceStream"></param> /// <returns></returns> public static byte[] DeCompress(Stream aSourceStream) { byte[] vUnZipByte = null; GZipStream vUnZipStream; using (MemoryStream vMemory = new MemoryStream()) { vUnZipStream = new GZipStream(aSourceStream, CompressionMode.Decompress); try { byte[] vTempByte = new byte[1024]; int vRedLen = 0; do { vRedLen = vUnZipStream.Read(vTempByte, 0, vTempByte.Length); vMemory.Write(vTempByte, 0, vRedLen); } while (vRedLen > 0); vUnZipStream.Close(); } finally { vUnZipStream.Dispose(); } vUnZipByte = vMemory.ToArray(); } return vUnZipByte; } /// <summary> /// 解压数据 /// </summary> /// <param name="aSourceByte"></param> /// <returns></returns> public static byte[] DeCompress(byte[] aSourceByte) { using (MemoryStream vMemory = new MemoryStream(aSourceByte)) { return DeCompress(vMemory); } } #endregion } 楼主要的是c#实现的gzip的原生代码,不是直接使用类库。我也需要原生代码,求那位大大提供 c# 自定义结构体内数组报错 编码转换 (WebForm)gridview 行的編輯 和 刪除問題!!新手求助!!! c#中的多态,谁能给讲讲! C# 静态方法的问题 如何编程判断局域网中的某台电脑是否安装了MSSQLSERVER及其所运行的是什么操作系统(win98/2K/XP/2003)?在线等,谢谢 用C#编写的dll库,能不能脱离.net环境使用 啊? 昏倒 <<指定的转换无效>> !奇怪! 在线请帮小弟看看 xml问题 最初级问题 C#函数调用的一个问题 关于DEV 第三方控件的汉化问题
http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx
/// <summary>
/// 数据压缩类,数据长度大于50000,压缩才有意义
/// </summary>
public class Compress
{
#region 压缩
/// <summary>
/// 压缩流数据
/// </summary>
/// <param name="aSourceStream"></param>
/// <returns></returns>
public static byte[] EnCompress(Stream aSourceStream)
{
MemoryStream vMemory = new MemoryStream(); aSourceStream.Seek(0, SeekOrigin.Begin);
vMemory.Seek(0, SeekOrigin.Begin);
try
{
using (GZipStream vZipStream = new GZipStream(vMemory, CompressionMode.Compress))
{
byte[] vFileByte = new byte[1024];
int vRedLen = 0;
do
{
vRedLen = aSourceStream.Read(vFileByte, 0, vFileByte.Length);
vZipStream.Write(vFileByte, 0, vRedLen);
}
while (vRedLen > 0);
}
}
finally
{
vMemory.Dispose();
}
return vMemory.ToArray();
}
/// <summary>
/// 压缩数据
/// </summary>
/// <param name="aSourceStream"></param>
/// <returns></returns>
public static byte[] EnCompress(byte[] aSourceStream)
{
using (MemoryStream vMemory = new MemoryStream(aSourceStream))
{
return EnCompress(vMemory);
}
}
#endregion #region 解压
/// <summary>
/// 解压数据
/// </summary>
/// <param name="aSourceStream"></param>
/// <returns></returns>
public static byte[] DeCompress(Stream aSourceStream)
{
byte[] vUnZipByte = null;
GZipStream vUnZipStream; using (MemoryStream vMemory = new MemoryStream())
{
vUnZipStream = new GZipStream(aSourceStream, CompressionMode.Decompress);
try
{
byte[] vTempByte = new byte[1024];
int vRedLen = 0;
do
{
vRedLen = vUnZipStream.Read(vTempByte, 0, vTempByte.Length);
vMemory.Write(vTempByte, 0, vRedLen);
}
while (vRedLen > 0);
vUnZipStream.Close();
}
finally
{
vUnZipStream.Dispose();
}
vUnZipByte = vMemory.ToArray();
}
return vUnZipByte;
}
/// <summary>
/// 解压数据
/// </summary>
/// <param name="aSourceByte"></param>
/// <returns></returns>
public static byte[] DeCompress(byte[] aSourceByte)
{
using (MemoryStream vMemory = new MemoryStream(aSourceByte))
{
return DeCompress(vMemory);
}
}
#endregion
}
楼主要的是c#实现的gzip的原生代码,不是直接使用类库。
我也需要原生代码,求那位大大提供