导航:首页 > 源码编译 > 简单压缩算法

简单压缩算法

发布时间:2022-08-31 13:15:28

A. 求C++简单文件压缩程序,用基本算法实现

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

void main()
{
ifstream infile("c:\\1.txt");//自己改文件名
ofstream outfile("c:\\2.txt");
char cCurrent,cPre;
int iCount=0;
cPre=-1;
while(infile>>cCurrent)
{
if(cCurrent=='\n') continue;
if(cPre==-1) cPre=cCurrent;
if(cPre==cCurrent)
{
iCount++;
}
else
{
if(cPre>='0'&&cPre<='9')
outfile<<iCount<<'*'<<cPre<<' ';
else
outfile<<iCount<<cPre<<' ';
cPre=cCurrent;
iCount=1;
}

}
if(cPre>='0'&&cPre<='9')
outfile<<iCount<<'*'<<cPre<<' ';
else
outfile<<iCount<<cPre<<' ';
infile.close();
outfile.close();

}

B. 如何用哈夫曼算法实现简单的文件压缩

我使用两种方法从zip文件中读取数据,第一种的代码是从“UTF开始”到“UTF结束”,看到有人(http://www.csdn.net/develop/article/6839.shtm)介绍过这种用法,但是我用的时候,出现java.io.UTFDateFormatException异常,我跟踪调试的时候,发现问题出现在读取的时候,写是可以的。
第二种的代码是从“int开始”到“int结束”,可以正确解压缩各种文件(二进制读取,应该也没问题的),但是速度很慢,请问各位大虾,有没有什么办法解决?
代码如下:
……
String doc="";
zin = new ZipInputStream(new FileInputStream(待解压缩文件));
while(((entry = zin.getNextEntry()) != null)&&!entry.isDirectory())
{
FileOutputStream fout =
new FileOutputStream(解压缩后的文件名);
DataOutputStream dout = new DataOutputStream(fout);
DataInputStream in = new DataInputStream(zin);
/*
//UTF开始
doc=in.readUTF();
in.close();
dout.writeUTF(doc);
dout.close();
//UTF结束
*/
//int开始
int c;
while((c = in.read()) != -1)
dout.write(c);
dout.close();
//int结束
fout.close();
zin.closeEntry();
System.out.println("Close entry successful!");
}
zin.close();
……

C. 怎样压缩文件!要最快最详细简单的

WinRAR压缩功能强大,其独特的多媒体压缩算法和紧固式压缩法更是有针对性地提高了压缩率。2.50版开始完全兼容RAR和ZIP格式;易用性也大大提高。WinRAR的最大优点是压缩率大,速度快。当设置成最快压缩方式的时候,压缩包比ZIP小,而速度却与PKZIP不相上下,更可支持非RAR压缩文件。 1、软件下载 下载软件,我们最好到它的老家www.rarsoft.com下载。因为在这里可以下载到最新的版本(笔者当前使用的是2.71版本),当然是英文版本。如果你想使用中文的WinRAR,你可以去 http://www.newhua.com下载它的汉化包。 2、软件安装 安装WinRAR非常简单,执行下载回来的可执行文件,一路[确认]就可以了。设置WinRAR的文件关联窗口,为了能发挥它的效能,最好选择"Select all",因为这样才能让WinRAR管理它可以识别的压缩文件类型。并勾选旁边的"Put WinRAR to Desktop"、"Put WinRAR to Start Menu"、"Creat WinRAR program group",在桌面、开始菜单、程序组创建WinRAR快捷方式。如果你下载了汉化包,接着再执行汉化安装文件将WinRAR汉化就可以了。 3、压缩文件 要对某个文件夹下所有的文件进行压缩打包时,我们不需要打开WinRAR的主程序窗口,而可以选定该文件夹图标,单击鼠标右键,在弹出的菜单中选"Add to Archive"命令,然后会弹出窗口,在"General"页面中输入压缩后的文件名,默认扩展名为"?.rar"。在Advanced中设置保存路径,其他的使用默认设置即可。单击[确定]后屏幕上还会出现压缩进度状态条;如果要对某个文件夹下的一个或数个文件进行压缩打包,则进入该文件夹,按住[Ctrl]键的同时,选定文件,随后再进行以上操作。 在压缩文件夹的时候,如果要在当前路径创建同名压缩文件,方法则更简单,在该文件夹上单击鼠标右键,在弹出的菜单中选择"Add to‘***.rar'",其中***为当前文件夹名称。这样操作,比打开WinRAR压缩窗口,然后再逐一地添加文件要快捷得多了。 4、解压缩文件 对于使用WinRAR压缩的RAR压缩文件,双击它就可以使用WinRAR进入压缩文件内部,感觉和打开普通文件夹没什么两样。这时的按钮会比选中一般文件多一些,分别为:解压缩至当前文件夹,解压缩至指定文件夹,检测压缩文档,预览文档,删除文档,为压缩文档写备注,生成自解压文件。你只需选中文档,再按所需功能的按钮就可以实现,非常简便。 WinRAR也提供了更简单的解压缩方法:使用鼠标右键单击压缩文件,在系统右键菜单中包括了两个WinRAR提供的命令,其中"Extract files"表示扩展压缩包文件到当前路径,"Extract to XXX\"表示在当前路径下创建与压缩包名字相同的文件夹,然后将压缩包文件扩展到这个路径下,可见无论使用哪个,都是很方便的。 5、创建自解压文件 有的时候,我们更需要的是创建自解压文件,这样就可以随时随地地调用它,而不需要压缩软件的支持。创建自解压文件的方法也很简单,在设置压缩文件属性的图2窗口的"General"页面中,勾选"Create SFX archive"(创建自解压文件),你会发现刚才的*.rar变成了*.exe! 6、生成分卷自解压文件 在进行数据备份或大文件交换时,通常采取用压缩软件分卷压缩到软盘上的办法,而在复原的时候则需要用到该压缩软件,否则这些压缩文件便无法复原。WinRAR开了生成分卷自解压文件的先河,制作的分卷压缩文件,离开WinRAR照用不误! 首先在主界面中选定欲压缩的文件夹或文件,单击鼠标右键,从快捷菜单中选"Add to Archive"命令,出现小窗口,先将压缩文档名称填入,需要带路径(如A:\文件名)。然后从容量(Volume size)下拉菜单中选择与软盘对应的数值。有360KB、720KB、1.2MB、1.44MB、2.88MB和自动检测六个备选项,也可以输入自己设定的数值。在文档选项区内选中"自解压"(SFX archive)方式,最后单击[OK],则开始进行分卷压缩,生成的第一个文件扩展名为.exe,第二个文档扩展名为.r00,第三个为.r01,依此类推。复原时,先插入第一张软盘,执行?.exe文件,随后会提示依次插入其他软盘,则顺利地完成解压缩。 7、转换压缩格式 WinRAR提供了将扩展名为.rar的压缩包文件转换为.exe文件功能(也就是创建自解压文件),使用该功能,可以方便地将以前创建的普通压缩格式转换为自解压文件,这样一来就为用户进行软件的解压缩提供了极大的方便。如果想进行该项操作,可采用如下的方法:首先在程序界面中打开相应的RAR压缩包,然后在文件列表中单击鼠标右键,并从关联的菜单中选择"Convert archive to SFX"命令,程序会给出对话框"Select SFX mole",在其中选择生成的EXE文件格式,然后单击[OK]按钮确定就可以了。

D. 深入浅出lz4压缩算法

lz4是目前综合来看效率最高的压缩算法,更加侧重压缩解压速度,压缩比并不是第一。在当前的安卓和苹果操作系统中,内存压缩技术就使用的是lz4算法,及时压缩手机内存以带来更多的内存空间。本质上是时间换空间。

lz4压缩算法其实很简单,举个压缩的栗子

其中两个括号内的便代表的是压缩时检测到的重复项,(5,4) 代表向前5个byte,匹配到的内容长度有4,即"bcde"是一个重复。当然也可以说"cde"是个重复项,但是根据算法实现的输入流扫描顺序,我们取到的是第一个匹配到的,并且长度最长的作为匹配。

压缩后的数据是下面的格式

其他情况也可能有连续的匹配:

Literals 指没有重复、首次出现的字节流,即不可压缩的部分
Match 指重复项,可以压缩的部分
Token 记录literal长度,match长度。作为解压时候memcpy的参数

可以想到,如果重复项越多或者越长,压缩率就会越高。上述例子中"bcde"在压缩后,用(5,4)表示,即从4个bytes压缩成了3个bytes来表示,其中offset 2bytes, match length 1byte,能节省1个byte。

大致流程,压缩过程以至少4个bytes为扫描窗口查找匹配,每次移动1byte进行扫描,遇到重复的就进行压缩。
由于offset用2bytes表示,只能查找到到2^16(64kb)距离的匹配,对于压缩4Kb的内核页,只需要用到12位。
扫描的步长1byte是可以调整的,即对应LZ4_compress_fast机制,步长变长可以提高压缩解压速度,减少压缩率。

我们来看下 apple的lz4实现

压缩理解了其实解压也很简单

根据解压前的数据流,取出token内的length,literals直接复制到输出,即memcpy(src,dst,length)
遇到match,在从前面已经拷贝的literals复制到后面即可

E. 压缩文件如何达到高压缩率

压缩文件达到高压缩率的方法有:

1、首先,我们对我们需要进行压缩操作的文件击右键,选择“添加到压缩文件”。

2、由于我们在进行压缩文件的时候,如果我们将文件格式选择为.rar,一般来说这样压缩的文件的压缩比率是较高的。如果我们选择了.zip文件格式,那么一般情况下压缩比率是比较小的,所以我推荐大家还是选择为.rar的文件格式。

3、接下来,我们需要进行的操作就是,将“创建固实压缩文件”和“测试压缩文件”两个选项勾选,这样我们下来压缩的文件就会比较小,大家可以看看自己文件属性里面的压缩比率,如果文件很大的话,会很明显。希望大家勾选“测试压缩文件”,因为我们可能会在压缩文件的过程中遇到某些未知错误。

4、接下来,我们就可以点击“确定”,软件就会自动进行压缩操作,然后看看我们的文件的压缩比率吧。

5、如果我们需要压缩的文件的体积很大,那么为了节约时间,一般情况下也是可以将文件格式选择为.zip,毕竟这样可以节约很多时间的。

(5)简单压缩算法扩展阅读:

常用的图像压缩软件有:

①JPEG Optimizer

JPEG Optimizer是一个可以按照指定的压缩比压缩JPEG格式图片的工具软件,它使用Magic Compress技术,能对 JPEG图形文件压缩50%而不损失画质,自定压缩比,能即时显现压缩后的图片,比较差异,效果相当不错。而所有这一切,只需要通过调整杆进行压缩比调整即可。

②The JPEG Wizard

The JPEG Wizard可以在不影响图像质量的情况下对图片进行最大限度的压缩,同时支持对图片的局部压缩、剪切、旋转,调整图片的对比度、亮度和色度。另外,The JPEGWizard还具有较强的批处理功能,避免重复性操作。

③7-Zip

7-Zip是一款号称有着现今最高压缩比的压缩软件,它不仅支持独有的7z文件格式,而且还支持各种其他压缩文件格式,其中包括ZP、RAR、CAB、GZIP、BZP2和TAR。此软件压缩的压缩比要比普通ZIP文件30%~50%。因此,它可以把经 Winzip压缩的文件再压缩2%~10%。

F. 简述JPEG压缩算法

首先你需要了解几个概念,有损压缩,量化,行程编码。
对一副图片来说,bitmap就是原始格式,没经过任何压缩的。
量化就是把所有0-255的像素值进行归类,然后分成尽量少的积累,这要存储量就小很多了,对于JEPG来说量化是有损压缩的起源。
最后就是对所有的已经归类过的点进行行程编码,然后就压缩完了

G. 怎样压缩500KB的照片到100KB

图片压缩可以用在线的一些工具比较方便,比如用这个在线智能图片压缩工具,你就可以把图片文件压缩到你想要的体积大小,例如你设置压缩数值到100kb,等待几秒钟,在线图片压缩工具自动把图片的文件大小压缩到最高100kb了。通俗点说,也就是你想要设定压缩到多少kb文件大小,他压缩完的输出图片就是多少kb了,这应该是已经很方便了。在线智能图片压缩,压缩图片体积大小,JPG|PNG大图压缩

在线图片智能压缩使用步骤:

一、首先点击加号添加需要压缩的图片。目前已知支持对jpg、png、webp、bmp等多种常见的图片格式进行压缩,如果选择图片后正常显示并能够压缩成功,则代表支持该图片格式。
二、可以自行修改图片需要被压缩到的最大宽高尺寸,默认为图片原始的宽高尺寸,并且宽高比例是自动锁定的,确保图片不会变形。
三、必须设置图片被压缩后,期望输出的压缩之后图片文件的最大占用空间,该选项是必填的。
四、选择图片压缩的算法。默认为智能混合压缩算法,绝大多数情况下使用默认算法进行图片压缩即可。
五、当你设置压缩后的大小单位为”Kb“时,压缩大小的设定值不能小于1Kb,但图片压缩后的最终文件大小是可以小于1Kb的。

H. 二进制压缩算法有哪些

二进制数据压缩算法二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,因为数字计算机只能识别和处理由‘0’。‘1’符号串组成的代码。其运算模式正是二进制。19世纪爱尔兰逻辑学家乔治布尔对逻辑命题的思考过程转化为对符号“0‘’。‘’1‘’的某种代数演算,二进制是逢2进位的进位制。0、1是基本算符。因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。

二进制压缩 - 算法

二进制压缩

编程时遇到每个数据只有两种状态,且 dfs 或者 bfs 时遍历时间复杂度高时,可以采用二进制压缩数据,尤其是二维数组。LZFSE

1,zlib和gzip都对deflate进行了封装,比deflate多了数据头和尾

1,苹果开源了新的无损压缩算法 LZFSE ,该算法是去年在iOS 9和OS X 10.10中 引入 的。按照苹果公司的说法,LZFE的压缩增益和ZLib level 5相同,但速度要快2~3倍,能源效率也更高。

LZFSE基于Lempel-Ziv,并使用了 有限状态熵编码,后者基于Jarek Duda在

非对称数字系统(ANS)方面所做的熵编码工作。简单地讲,ANS旨在“终结速度和比率的平衡”,既可以用于精确编码,又可以用于快速编码,并且具有数据加密功能。使用ANS代替更为传统的

Huffman和 算术编码方法的压缩库 越来越多,LZFSE就位列其中。

显然,LZFSE的目标不是成为最好或最快的算法。事实上,苹果公司指出,

LZ4的压缩速度比LZFSE快,而 LZMA提供了更高的压缩率,但代价是比Apple

SDK提供的其他选项要慢一个数量级。当压缩率和速度几乎同等重要,而你又希望降低能源效率时,LZFSE是苹果推荐的选项。

GitHub上提供了LZFSE的参考实现。在MacOS上构建和运行一样简单:

$ xcodebuild install DSTROOT=/tmp/lzfse.dst

如果希望针对当前的iOS设备构建LZFSE,可以执行:

xcodebuild -configuration “Release” -arch armv7 install DSTROOT=/tmp/lzfse.dst

除了 API文档之外,苹果去年还提供了一个 示例项目,展示如何使用LZFSE 进行块和流压缩,这是一个实用的LZFSE入门资源。

LZFSE是在谷歌 brotli之后发布的,后者在去年开源。与LZFSE相比,brotli 似乎是针对一个不同的应用场景进行了优化,比如压缩静态Web资产和Android APK,在这些情况下,压缩率是最重要的。

阅读全文

与简单压缩算法相关的资料

热点内容
我的世界如何在服务器里设置货币 浏览:591
酷猫系统如何安装app 浏览:636
邮寄服务器是干什么用 浏览:159
解除电脑加密文件夹 浏览:358
androidcheckbox组 浏览:546
linux在线安装软件 浏览:823
如何设置手机安卓版 浏览:285
简历pdfword 浏览:123
锋云视频服务器网关设置 浏览:162
linux服务器如何查看网卡型号 浏览:142
加密相册误删了怎么恢复 浏览:380
安卓代练通怎么下载 浏览:518
知道域名如何查询服务器 浏览:907
方舟手游怎么才能进服务器 浏览:289
抖音算法自动爆音 浏览:24
linux修改网卡配置 浏览:913
云服务器和本地服务器数据 浏览:843
在家如何创业python 浏览:225
编译原理好课 浏览:718
python中实数的表示 浏览:372