今天又是没什么事情干,还是测试用例,无聊看了看论坛,有人争论压缩。我主要是看看了lzw数据压缩,当让还自己瞎写的一个 利用ascll的压缩。
先说说 lzw 主要的应用就是GIF,简单讲讲他的原理把。说不清楚别怪小弟啊。
这个压缩在重复字符比较多的时候压缩效果是比较好的。
例如:这个例子是从别人那摘的
ababbacb
前缀:ab那a就是前缀。
后缀:ab那b是后缀。
我们这里以2元为一组。
前缀 后缀 词 存在对应码 输出 编码
1. a (,a)
2. a b (a,b) n a 256
3. b a (b,a) n b 257
4. a b (a,b) y
5. 256 b (256,b) n 256 258
6. b a (b,a) y
7. 257 c (257,c) n 257 259
8. c b (c,b) n c 260
上面的压缩
1.在一个保存 的仓库中 去查找每一步的词是否在这个仓库中。
2.如果不存在,则把这个前缀输出,因为不存在这个词,那么前缀肯定是不会在被编码了。而后缀可以和下一个字符形成的词存在仓库中。所以说 这个2元组,并不是代表2个字符,而是大于等于2 个字符。
3.如果存在,那我不用急着输出,因为可能和下一字符形成的词还在仓库中,直到不存在时,这就是我把这几个字符压缩后所替代的编码。
大概说说了这个原理。代码从我的描述看 ,递归是个比较重要的步骤,大家可以自己想想。
今天在论坛上看见他们说了 20位数字压缩成10之内字符。
用ascll码来看的话,0-127都可以被压缩成一个字符。根据这个原理的话, 是没问题的。
代码是我随意写的,有些什么规范,效率什么的都没考虑就是实现了个功能。呵呵
private static String a="1237593842947829353985793847589234";
private static String b="";
public static void main(String args[]){
ys(0);
System.out.println(b);
jy();
}
//ascll码压缩
public static void ys(int count){
int length=a.length();
char k;
while(count+3<length){
String s=a.substring(count, count+3);
int c=Integer.parseInt(s);
if(c>127){
String e=s.substring(0, 2);
count=count+2;
k=(char)Integer.parseInt(e);
b+=k;
}
else{
count=count+3;
k=(char)c;
b+=k;
}
}
if(length-count==3){
String f=a.substring(count, length);
int g=Integer.parseInt(f);
if(g>127){
String e=f.substring(0, 2);
k=(char)Integer.parseInt(e);
b+=k;
k=(char)Integer.parseInt((f.substring(2, 3)));
b+=k;
}
else
{
b+=(char)Integer.parseInt(f);
}
}
else {
String f=a.substring(count, length);
b+=(char)Integer.parseInt(f);
}
}
//ascll解压
public static void jy(){
int length=b.length();
int count=0;
while(count<length){
String s=b.substring(count,count+1);
int m=s.charAt(0);
count++;
System.out.print(m);
}
}
压缩 应该就是一个编码问题,使“xxxxxxxx”数据编码成“yyyy” 从而减少了信息量。但要有一一对应关系,使得压缩后可以被解压缩。在大学学数据结构时,霍夫曼编码,哈希编码有点了解。解压缩我不了解,只是记录下,有错误的见谅
分享到:
相关推荐
4. LZW编码和字典编码:分析字典编码的机制,包括滑动窗口和自适应版本。 5. 小波压缩与离散余弦变换(DCT):讲解在图像压缩中广泛使用的有损压缩技术,如JPEG和JPEG 2000。 6. 视频压缩:涵盖MPEG系列标准,如MPEG...
- **LZW压缩的实现**:讲解了LZW压缩算法的具体实现细节。 - **LZW解压缩**:介绍了LZW解压缩算法及其工作原理。 - **LZW解压缩的实现**:讲解了LZW解压缩算法的具体实现细节。 **第8章 二叉树和其他树** 1. **...
第二十一章“LZW字典压缩(扩展)”介绍了数据压缩技术中的LZW字典压缩算法,包括压缩的原理和基本步骤。 最后,在附录部分,本书还提供了如何提高学习效率的建议,帮助读者在学习Java的过程中事半功倍。 全书贯穿了...
- **数据压缩工具**:展示如何利用Clean实现高效的数据压缩算法,例如LZW压缩等。 - **更多案例**:书中还包括其他一些实用的应用示例,帮助读者更深入地理解Clean语言的应用场景和实践技巧。 #### 五、Clean语言...
- **LZW编码**:讲解LZW(Lempel-Ziv-Welch)编码及其解码过程。 #### 第5章 彩色数字图像基础 - **图像属性**:讲解分辨率、像素深度等基本属性的概念。 - **色彩模型**:介绍相加混色模型和相减混色模型及其应用...
021.PDF可能涵盖了数据压缩技术,如 Huffman 编码、LZW压缩或JPEG图像压缩。这些方法通过减少冗余信息来减小文件大小,使得数据传输更快,存储更高效。 017.PDF可能讨论了错误检测和纠正码,如奇偶校验位、CRC...
6. **数据压缩**:数据压缩是信息论中的一个重要应用,包括无损压缩(如LZ77、LZW算法)和有损压缩(如JPEG图像压缩、MP3音频压缩)。这些压缩方法利用数据的统计特性来减小存储空间。 7. **通信系统模型**:课程...
1. 压缩算法的详细讲解文档,帮助你理解各种压缩方法的基本原理。 2. 实现压缩和解压缩功能的源代码示例,这可能是用C++、Python或其他编程语言编写的,你可以通过阅读和分析这些代码来提升你的编程技能。 3. 测试...
3. **图像数据解码**:GIF使用LZW(Lempel-Ziv-Welch)无损压缩算法,这是一种基于字典的压缩方法。`GifDecoder`需要解码这些压缩数据,恢复出原始像素。 4. **透明度处理**:GIF支持透明度设置,`GifDecoder`会...
GIF使用LZW(Lempel-Ziv-Welch)压缩算法对图像数据进行压缩,这种算法是无损的,可以有效地减少文件大小。 要使用JavaScript编写GIF解码器,我们需要理解GIF文件结构。GIF文件由一个头部、逻辑屏幕描述符、全局...
3. **文件压缩工具**:实现文件压缩功能,采用哈夫曼编码或LZW等算法。 4. **游戏开发**:使用C++和游戏开发库创建简单游戏,如迷宫游戏、射击游戏等。 5. **数据结构实现**:选择链表、栈、队列或二叉树等数据结构...
11. **数据压缩**:虽然标题未直接提及,但计算机领域中的数据压缩算法也很重要,如霍夫曼编码、LZ77、LZW等,它们在存储和传输数据时起到关键作用。 通过这些课件的学习,你可以建立起扎实的算法基础,提高解决...
4. 数据压缩:霍夫曼编码、LZW编码等算法减少数据存储需求。 七、学习资源 1. “算法导论”:经典的算法教材,深入浅出讲解各种算法。 2. LeetCode:在线平台,提供大量算法题目供练习。 3. Coursera、edX等在线...