网上有很多关于字符压缩的例子,但是使用时发现基本都无法正常工作
能够压缩,但不能够还原,很是糟糕!还说经过测试可以正常使用,反正我是不能够正常使用的
自己从codeproject上找到一个,可以正常工作,共享与大家
库类
class ZipLib
{
public static string Zip(string value)
{
//Transform string into byte[]
byte[] byteArray = new byte[value.Length];
int indexBA = 0;
foreach (char item in value.ToCharArray())
{
byteArray[indexBA++] = (byte)item;
}
//Prepare for compress
System.IO.MemoryStream ms = new System.IO.MemoryStream();
System.IO.Compression.GZipStream sw = new System.IO.Compression.GZipStream(ms,
System.IO.Compression.CompressionMode.Compress);
//Compress
sw.Write(byteArray, 0, byteArray.Length);
//Close, DO NOT FLUSH cause bytes will go missing...
sw.Close();
//Transform byte[] zip data to string
byteArray = ms.ToArray();
System.Text.StringBuilder sB = new System.Text.StringBuilder(byteArray.Length);
foreach (byte item in byteArray)
{
sB.Append((char)item);
}
ms.Close();
sw.Dispose();
ms.Dispose();
return sB.ToString();
}
public static string UnZip(string value)
{
//Transform string into byte[]
byte[] byteArray = new byte[value.Length];
int indexBA = 0;
foreach (char item in value.ToCharArray())
{
byteArray[indexBA++] = (byte)item;
}
//Prepare for decompress
System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray);
System.IO.Compression.GZipStream sr = new System.IO.Compression.GZipStream(ms,
System.IO.Compression.CompressionMode.Decompress);
//Reset variable to collect uncompressed result
byteArray = new byte[byteArray.Length];
//Decompress
int rByte = sr.Read(byteArray, 0, byteArray.Length);
//Transform byte[] unzip data to string
System.Text.StringBuilder sB = new System.Text.StringBuilder(rByte);
//Read the number of bytes GZipStream red and do not a for each bytes in
//resultByteArray;
for (int i = 0; i < rByte; i++)
{
sB.Append((char)byteArray[i]);
}
sr.Close();
ms.Close();
sr.Dispose();
ms.Dispose();
return sB.ToString();
}
}
使用库压缩的例子
string str_org="aaaaaaaaaabbbbbbbbbbbbcccccccccdddddddd";
string str_comp = ZipLib.Zip(str_org);
Console.WriteLine("str_comp:" + str_comp);
string str_uncomp = ZipLib.UnZip(str_comp);
Console.WriteLine("str_uncomp:" + str_uncomp);
Console.ReadLine();
希望对大家有所帮助
分享到:
相关推荐
根据给定文件的信息,本文将围绕“字符串的压缩与解压”这一主题展开,深入探讨字符串压缩和解压的基本原理、实现方法以及应用场景等多方面内容。 ### 字符串压缩和解压概述 字符串的压缩与解压是计算机科学中的一...
本文将深入探讨C#语言中三种实现字符串压缩与解压的方法。 1. **GZipStream** GZipStream是.NET Framework提供的用于压缩和解压缩数据的类,它是基于Gzip文件格式的。要使用GZipStream,我们需要创建一个...
使用以下代码进行压缩和解压 /// /// 利用ICSharpCode压缩 /// /// <param name="param"></param> /// <returns></returns> public static string IC_Compress(string param) { byte[] data = System....
本文将介绍如何自定义一个简单的字符串压缩和解压缩的方法,使用.NET框架内置的`System.IO.Compression.GZipStream`类。 首先,让我们分析`ZipLib`类中的`Zip`方法。这个方法接收一个字符串`value`作为输入,其目的...
C#利用SharpZipLib进行压缩和解压 C#中的压缩和解压是非常常见的操作, SharpZipLib是一个流行的压缩库,它提供了压缩和解压的功能。在本文中,我们将使用SharpZipLib库来实现文件的压缩和解压。 SharpZipLib简介...
字符串采用UTF-8编码获得byte数组,保证两端通用,如果应用对编码有要求,两端同时改为其他编码方式也可以 从Java和C#的代码看,两者代码上有细微差别,但是思路方面两者基本是一样的 另外一个备忘,Java里边,...
c# Lz77 压缩算法,已经使用很久 没有bug
**字符串压缩与解压缩:** 除了处理文件,我们还可以使用.NET框架对字符串进行压缩和解压缩。这通常涉及使用GZipStream或DeflateStream,它们提供了数据的压缩和解压缩功能。以下是一个用GZipStream压缩和解压缩字符...
2. **压缩数据**:调用`pako.gzip()`或`pako.deflate()`方法,传入需要压缩的字符串或Buffer对象。例如: ```javascript const data = 'Hello, World!'; const compressedData = pako.gzip(data); ``` 3. **解...
不仅可以创建7z文件,还可以读取、解压和检查7z档案。同时,通过度量压缩时间和计算压缩率,我们可以评估算法的性能和效率。希望这个简短的指南对你在C#中操作7z格式有所帮助,也鼓励你在实际项目中进一步探索和优化...
标题 "C# 压缩和解压web空间中的所有文件" 涉及到的是在C#编程环境中,如何利用代码对Web空间中的文件进行压缩和解压操作。这通常是为了节省存储空间,便于传输或者备份数据。下面将详细阐述相关知识点。 一、C# ...
- **字符串压缩**:是数据压缩的一个应用场景,目标是减少存储空间或传输数据的需求。 - **哈夫曼编码**:是数据压缩中的一种算法,通过优化字符编码来提高压缩效率。 8. **实际应用**: - 哈夫曼编码常用于文本...
1. **压缩**:使用`pako.gzip()`方法,将未压缩的数据作为输入,它会返回一个已压缩的二进制字符串或Buffer(在Node.js环境下)。例如: ```javascript var input = "这是需要压缩的文本"; var compressed = pako...
标题中的“省市区json字符串”指的是一个数据文件,其中包含了中国所有省份、城市和区县的结构化数据,这些数据通常以JSON(JavaScript Object Notation)格式存储。JSON是一种轻量级的数据交换格式,因其易读性、...
在C#中,处理包含空格的文件名需要特别注意字符串的正确引用。当文件名中包含空格时,如果不进行适当的转义或使用引号包围,可能会导致解析错误。使用`System.IO`命名空间中的类,如`FileInfo`或`DirectoryInfo`,...
DEFLATE结合了LZ77字典压缩和霍夫曼编码,通过查找重复字符串并用短编码代替它们来达到压缩目的。C#中的实现通常会使用.NET框架提供的System.IO.Compression命名空间,该命名空间包含了ZipArchive类,可用于创建、...
该算法尤其关注那些在JSON、XML等数据格式中常见的短字符串的压缩,因为这些格式在现代通信和数据库存储中广泛应用。 Unishox的出现是为了解决Unicode字符串在内存和传输中的效率问题。Unicode是一种广泛采用的标准...
在C#编程环境中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式,它允许我们将数据结构和对象序列化为文本字符串,便于在网络上传输和存储。JSON易于阅读和编写,同时也易于机器解析和生成...
在C#中,可以使用`DateTime.Now`获取当前时间,然后通过`ToString()`方法转换为特定格式的字符串,例如"yyyyMMddHHmmss"。 3. 保存软件设置: 应用程序可以使用XML、JSON或注册表等方式保存用户的配置信息,如源...
这意味着开发者可能需要理解两种语言的语法差异,以及如何在不同的开发环境中有效地实现字符串压缩和解压功能。 在压缩包子文件的文件名称 "Porting-the-Financial-Times-JavaScript-String-Comp.pdf" 中,我们可以...