码迷,mamicode.com
首页 > 其他好文 > 详细

字符串的压缩与解压

时间:2014-06-18 20:40:26      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:http   ext   com   get   数据   string   

public static string compress(string aString)
{
if (string.IsNullOrEmpty(aString))
return "";
StringBuilder sb = new StringBuilder();
byte[] byteArray = CompressByte(aString);
foreach (byte item in byteArray)
sb.Append((char)item);
return sb.ToString();
}


public static byte[] CompressByte(string input)
{
byte[] compressed = null;
//SevenZipBase.SetLibraryPath(@"F:\WpfApplication3\WpfApplication3\bin\Debug\SevenZipSharp.dll");
SevenZipCompressor compressor = new SevenZipCompressor();
compressor.CompressionMethod = CompressionMethod.Ppmd;
compressor.CompressionLevel = CompressionLevel.High;
using (MemoryStream msin = GetUTF8MemorySteam(input))
{
using (MemoryStream msout = new MemoryStream())
{
compressor.CompressStream(msin, msout);

msout.Position = 0;
compressed = new byte[msout.Length];
msout.Read(compressed, 0, compressed.Length);

}
}
return compressed;
}

/// <summary>
/// 获取输入字符串的UTF8编码
/// </summary>
/// <param name="input">源字符串</param>
/// <returns>内存数据流</returns>
private static MemoryStream GetUTF8MemorySteam(string input)
{
MemoryStream ms = new MemoryStream();
byte[] bytes = Encoding.Default.GetBytes(input);
ms.Write(bytes, 0, bytes.Length);
return ms;
}

/// <summary>
/// 解压字节数组
/// </summary>
/// <param name="input">源字节数组</param>
/// <returns>解压后字符串</returns>
public static string Decompressbyte(byte[] input)
{

byte[] uncompressedbuffer = null;
using (MemoryStream msin = new MemoryStream())
{
msin.Write(input, 0, input.Length);
uncompressedbuffer = new byte[input.Length];
msin.Position = 0;
using (SevenZipExtractor extractor = new SevenZipExtractor(msin))
{
using (MemoryStream msout = new MemoryStream())
{
extractor.ExtractFile(0, msout);
msout.Position = 0;
uncompressedbuffer = new byte[msout.Length];
msout.Read(uncompressedbuffer, 0, uncompressedbuffer.Length);
}
}
}
return Encoding.Default.GetString(uncompressedbuffer);
}

public static string decompress(string aString)
{
if (string.IsNullOrEmpty(aString))
return "";
int indexBA = 0;
byte[] byteArray = new byte[aString.Length];
foreach (char item in aString.ToCharArray())
byteArray[indexBA++] = (byte)item;

return Decompressbyte(byteArray);
}

 

 

下载地址:http://down.51cto.com/data/1333830

字符串的压缩与解压,布布扣,bubuko.com

字符串的压缩与解压

标签:http   ext   com   get   数据   string   

原文地址:http://www.cnblogs.com/hongsedigua/p/3790474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!