RM.Common/DotNetFile/GZipHelper.cs
(开头部分) 6KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.IO;
using System.IO.Compression;
using System.Text;
namespace RM.Common.DotNetFile
{
public class GZipHelper
{
public static string Compress(string text)
{
byte[] buffer = Encoding.UTF8.GetBytes(text);
MemoryStream ms = new MemoryStream();
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
{
zip.Write(buffer, 0, buffer.Length);
}
ms.Position = 0L;
byte[] compressed = ms.ToArray();
ms.Read(compressed, 0, compressed.Length);
byte[] gzBuffer = new byte[compressed.Length + 4];
Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
return Convert.ToBase64String(gzBuffer);
}
public static string Uncompress(string compressedText)
{
byte[] gzBuffer = Convert.FromBase64String(compressedText);
MemoryStream ms = new MemoryStream();
int msgLength = BitConverter.ToInt32(gzBuffer, 0);
ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
byte[] buffer = new byte[msgLength];
ms.Position = 0L;
GZipStream zip = new GZipStream(ms, CompressionMode.Decompress);
zip.Read(buffer, 0, buffer.Length);
return Encoding.UTF8.GetString(buffer);
}
public static T GZip<T>(Stream stream, CompressionMode mode) where T : Stream
{
byte[] writeData = new byte[4096];
T ms = default(T);
T result;
using (Stream sg = new GZipStream(stream, mode))
{
while (true)
{
Array.Clear(writeData, 0, writeData.Length);
int size = sg.Read(writeData, 0, writeData.Length);
if (size <= 0)
{
break;
}
ms.Write(writeData, 0, size);
}
result = ms;
}
return result;
}
后面还有 117 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
